Beispiel 1: addiereRoemisch

28.11.2016 11:30 Uhr
#include <iostream>

using namespace std;

int addiereRoemisch(char *zahl1, char *zahl2);
int romZuArabien(char *rom);
char *arabienZuRom(int arabisch);

int main()
{
char zahl1[10], zahl2[10];
int ergebnis;
char *ergebnisRoemisch;

cout << "Bitte geben Sie eine erste Zahl ein:";
cin >> zahl1;
cout << "Bitte geben Sie eine zweite Zahl ein:";
cin >> zahl2;

ergebnis=addiereRoemisch(zahl1,zahl2);
ergebnisRoemisch=arabienZuRom(ergebnis);

cout << zahl1 << " + " << zahl2 << " = " << ergebnisRoemisch << endl;
}

int addiereRoemisch(char *zahl1, char *zahl2)
{
int resultat,arab1,arab2;

arab1=romZuArabien(zahl1);
arab2=romZuArabien(zahl2);
resultat=arab1+arab2;

return resultat;
}

int romZuArabien(
char            *rom)
{
char roemischeZiffern[8] = "ivxlcdm";
int ziffernWert[7] = {1, 5, 10, 50, 100, 500, 1000};
int arabisch[10], stellen=0, resultat;

if (rom[0]=='0') return 0;

stellen=0;
for (int j; rom[stellen]!='\0'; stellen++)
    {
    for (j = 0; j < 7; j++)
        if (rom[stellen] == roemischeZiffern[j])
           {
           arabisch[stellen] = ziffernWert[j];
           break;
           }
    if (j == 7) return 0;
    }

for (int j=1; j < stellen; j++)
    if (arabisch[j] > arabisch[j-1])
       {
       arabisch[j] -= arabisch[j-1];
       arabisch[j-1] = 0;
       }

resultat=0;
for (int j=0; j < stellen; j++) resultat += arabisch[j];

return resultat;
}

char *arabienZuRom(int arabisch)
{
char *resultat;
char roemischeZiffern[8] = "mdclxvi";
int ziffernWert[7] = {1000,500,100,50,10,5,1};
int stelle=0;

resultat = new char[10];
for (int i = 0; i < 7; i++)
    {
    while (arabisch >= ziffernWert[i])
          {
          resultat[stelle] = roemischeZiffern[i];
          arabisch -= ziffernWert[i];
          stelle++;
          }
    }
resultat[stelle]='\0';


return resultat;
}

Anzahl: example1.cpp

 

Schlagwörter: