Beispiel 12: addiereRoemisch + romZuArabien II

06.11.2016 12: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;

zahl1=NULL;
zahl2=NULL;

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 12: Erläuterungen I

#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;

Beachten Sie bitte, daß hier ebenfalls das gleiche zu
gelten scheint, wie in Beispiel 10. Eine Veränderung der "Zeiger Variablen"
zahl1 oder zahl2 ändert die Zeiger Variable zahl1 oder zahl2 in main() nicht.
zahl1=NULL;
zahl2=NULL;

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: example12.cpp

Schlagwörter: