Beispiel 11: addiereRoemisch + romZuArabien

06.11.2016 01:30 Uhr
#include <iostream>

using namespace std;


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

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

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

ergebnis=addiereRoemisch(zahl1,zahl2);

cout << zahl1 << " + " << zahl2 << " = " << ergebnis << 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;
}

Beispiel 11: Erläuterungen I

Keine spezifischen Hinweise zu diesem Beispiel. Wenn Sie
Schwierigkeiten haben, es zu lesen, empfiehlt es sich, den zweiten Tag zu
rekapitulieren, an dem wir diese Funktion abgeleitet haben.
#include <iostream>

using namespace std;


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

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

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

ergebnis=addiereRoemisch(zahl1,zahl2);

cout << zahl1 << " + " << zahl2 << " = " << ergebnis << 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;
}

Anhang: example11.cpp

Schlagwörter: