Beispiel 10: römischer Taschenrechner I

24.10.2016 02:31 Uhr
#include <iostream>

using namespace std;

int main()
{
char roemisch[10];
char roemischeZiffern[8] = "ivxlcdm";
int ziffernWert[7] = {1, 5, 10, 50, 100, 500, 1000};
int arabisch[10], stellen, zahl1, zahl2, resultat, aktiv;
int j;
char aktion;

aktiv=1;
while (aktiv==1)
{
cout << "Bitte geben Sie eine römische Zahl ein: ";
cin >> roemisch;
for (stellen=0; roemisch[stellen]!='\0'; stellen++)
{
for (j = 0; j < 7; j++)
if (roemisch[stellen] == roemischeZiffern[j])
{
arabisch[stellen] = ziffernWert[j];
break;
}
if (j == 7)
cout << "Fehler!" << endl <<
"In Ihrer Eingabe " << roemisch << " ist " << roemisch[stellen] <<

" keine römische Ziffer.";
}

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

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

cout << "Bitte geben Sie noch eine römische Zahl ein: ";
cin >> roemisch;
for (stellen=0; roemisch[stellen]!='\0'; stellen++)
{
for (j = 0; j < 7; j++)
if (roemisch[stellen] == roemischeZiffern[j])
{
arabisch[stellen] = ziffernWert[j];
break;
}
if (j == 7)
cout << "Fehler!" << endl <<

"In Ihrer Eingabe " << roemisch << " ist " << roemisch[stellen] <<
" keine römische Ziffer.";
}

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

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

cout << "Was soll damit geschehen?" << endl << "(+-*/)" << endl;
cin >> aktion;

switch(aktion)
{
case '+':
resultat=zahl1 + zahl2;
break;
case '-':
resultat=zahl1 - zahl2;
break;
case '*':
resultat=zahl1 * zahl2;
break;
case '/':
resultat=zahl1 / zahl2;
break;
default:
cout << "Was meinen Sie mit '" << aktion << endl << "'?" << endl;
}

cout << "Das Ergebnis lautet: " << resultat << endl;

if (zahl1 == 0) aktiv=0;
}

return 0;
}

OK, so erhalten wir durch Einsetzen von Beispiel 9 in Beispiel 1 einen Taschenrechner, der mit römischen Zahlen operiert.

Beachten Sie bitte, daß der identische Programmkode für die Umwandlung der ersten und der zweiten Zahl verwendet wird.