Problem bei Programmieraufgabe
-
Hallo zusammen,
ich bin Neuling in sachen Programmieren und brauche drigend eure Hilfe.
Ich habe eine Aufgabe bekommen, die ich einfach nicht ganz lösen kann.
Die Aufgabe lautet:
Schreiben sie ein Programm, das eine positive Zahl von 0-100 mit maximal 1 Nachkommastelle schriftlich ausgibt.
Dies bedeutet, dass z.B 83.3 als Dreiundachzigkommadrei ausgegeben werden soll.
Ich habe bereits ein Programm geschrieben, jedoch gibt es mir alle Zahlen, ausser die Kommastellen aus. Die Kommastellen werden nur für 0-1 und .5 Zahlen ausgegeben, ich begreife aber nicht warum. Ich hoffe jemand sieht den Fehler in meinem Programm:#include <iostream>
#include <climits>
#include <cmath>using namespace std;
int main(void)
{
using namespace std;
cout << "Geben sie eine positive, zweistellige Zahl mit maximal einer Nachkommastelle ein, um die Zahl ausgeschrieben zurueck zu erhalten" << endl;
double eingabe;
int inteingabe;
cin >> eingabe;
inteingabe = eingabe;switch (inteingabe)
{
case 0: cout <<"null"; break;
case 1: cout <<"eins"; break;
case 2: cout <<"zwei"; break;
case 3: cout <<"drei"; break;
case 4: cout <<"vier"; break;
case 5: cout <<"fuenf"; break;
case 6: cout <<"sechs"; break;
case 7: cout <<"sieben"; break;
case 8: cout <<"acht"; break;
case 9: cout <<"neun"; break;
case 10: cout <<"zehn"; break;
case 11: cout <<"elf"; break;
case 12: cout <<"zwoelf"; break;
case 13: cout <<"dreizehn"; break;
case 14: cout <<"vierzehn"; break;
case 15: cout <<"fuenfzehn"; break;
case 16: cout <<"sechszehn"; break;
case 17: cout <<"siebzehn"; break;
case 18: cout <<"achtzehn"; break;
case 19: cout <<"neunzehn"; break;
case 20: cout <<"zwanzig"; break;
case 21: cout <<"einsundzwanzig"; break;
case 22: cout <<"zweiundzwanzig"; break;
case 23: cout <<"dreiundzwanzig"; break;
case 24: cout <<"vierundzwanzig"; break;
case 25: cout <<"fuenfundzwanzig"; break;
case 26: cout <<"sechsundzwanzig"; break;
case 27: cout <<"siebenundzwanzig"; break;
case 28: cout <<"achtundzwanzig"; break;
case 29: cout <<"neunundzwanzig"; break;
case 30: cout <<"dreissig"; break;
case 31: cout <<"einunddreissig"; break;
case 32: cout <<"zweiunddreissig"; break;
case 33: cout <<"dreiunddreissig"; break;
case 34: cout <<"vierunddreissig"; break;
case 35: cout <<"fuenfunddreissig"; break;
case 36: cout <<"sechsunddreissig"; break;
case 37: cout <<"siebenunddreissig"; break;
case 38: cout <<"achtunddreissig"; break;
case 39: cout <<"neununddreissig"; break;
case 40: cout <<"vierzig"; break;
case 41: cout <<"einsundvierzig"; break;
case 42: cout <<"zweiundvierzig"; break;
case 43: cout <<"dreiundvierzig"; break;
case 44: cout <<"vierundvierzig"; break;
case 45: cout <<"fuenfundvierzig"; break;
case 46: cout <<"sechsundvierzig"; break;
case 47: cout <<"siebenundvierzig"; break;
case 48: cout <<"achtundvierzig"; break;
case 49: cout <<"neunundvierzig"; break;
case 50: cout <<"fuenfzig"; break;
case 51: cout <<"einundfuenfzig"; break;
case 52: cout <<"zweiundfuenfzig"; break;
case 53: cout <<"dreiundfuenfzig"; break;
case 54: cout <<"vierundfuenfzig"; break;
case 55: cout <<"fuenfundfuenfzig"; break;
case 56: cout <<"sechsundfuenfzig"; break;
case 57: cout <<"siebenundfuenfzig"; break;
case 58: cout <<"achtundfuenfzig"; break;
case 59: cout <<"neunundfuenfzig"; break;
case 60: cout <<"sechzig"; break;
case 61: cout <<"einundsechzig"; break;
case 62: cout <<"zweiundsechzig"; break;
case 63: cout <<"dreiundsechzig"; break;
case 64: cout <<"vierundsechzig"; break;
case 65: cout <<"fuenfundsechzig"; break;
case 66: cout <<"sechsundsechzig"; break;
case 67: cout <<"siebenundsechzig"; break;
case 68: cout <<"achtundsechzig"; break;
case 69: cout <<"neunundsechzig"; break;
case 70: cout <<"siebzig"; break;
case 71: cout <<"einundsiebzig"; break;
case 72: cout <<"zweiundsiebzig"; break;
case 73: cout <<"dreiundsiebzig"; break;
case 74: cout <<"vierundsiebzig"; break;
case 75: cout <<"fuenfundsiebzig"; break;
case 76: cout <<"sechsundsiebzig"; break;
case 77: cout <<"siebenundsiebzig"; break;
case 78: cout <<"achtundsiebzig"; break;
case 79: cout <<"neunundsiebzig"; break;
case 80: cout <<"achtzig"; break;
case 81: cout <<"einundachtzig"; break;
case 82: cout <<"zweiundachtzig"; break;
case 83: cout <<"dreiundachtzig"; break;
case 84: cout <<"vierundachtzig"; break;
case 85: cout <<"fuenfundachtzig"; break;
case 86: cout <<"sechsundachtzig"; break;
case 87: cout <<"siebenundachtzig"; break;
case 88: cout <<"achtundachtzig"; break;
case 89: cout <<"neunundachtzig"; break;
case 90: cout <<"neunzig"; break;
case 91: cout <<"einundneunzig"; break;
case 92: cout <<"zweiundneunzig"; break;
case 93: cout <<"dreiundneunzig"; break;
case 94: cout <<"vierundneunzig"; break;
case 95: cout <<"fuenfundneunzig"; break;
case 96: cout <<"sechsundneunzig"; break;
case 97: cout <<"siebenundneunzig"; break;
case 98: cout <<"achtundneunzig"; break;
case 99: cout <<"neunundneunzig"; break;
default: cout <<"You insert a wrong number!"; break;}
if ((eingabe - inteingabe) == 0.1)
{
cout <<"kommaeins";
}
else if ((eingabe-inteingabe) == 0.2)
{
cout <<"kommazwei";
}
else if ((eingabe-inteingabe) == 0.3)
{
cout <<"kommadrei";
}
else if ((eingabe-inteingabe) == 0.4)
{
cout <<"kommavier";
}
else if ((eingabe-inteingabe) == 0.5)
{
cout <<"kommafuenf";
}
else if ((eingabe-inteingabe) == 0.6)
{
cout <<"kommasechs";
}
else if ((eingabe-inteingabe) == 0.7)
{
cout <<"kommasieben";
}
else if ((eingabe-inteingabe) == 0.8)
{
cout <<"kommaacht";
}
else if ((eingabe-inteingabe) == 0.9)
{
cout <<"kommaneun";
}cin.get();
cin.get();
return 0;
}
-
Hi, und willkommen hier im Forum.
Bei deinen Abfragen in der Art von
if ((eingabe - inteingabe) == 0.1)hast du das Problem, dass doubles auf Gleichzeit prüfst. Das geht oft in die Hose, weil die eben nicht haargenau gleich sind. Hier prüfst du am besten nur, ob sie mit einer gewissen Toleranz (Epsilon) gleich sind. Dazu findest du mit der Suchfunktion hier bestimmt einiges.
In deinem Fall kannst du das ganze aber auch mit 10 multiplizieren und auf int casten. Dann bist du das gedouble da ganz los.
Wenn du einen Debugger hast, kannst du ja auch mal mit dem reingucken, was da wirklich in deinen Variablen steht.Ansonsten wird der Code leserlicher wenn er gut eingerückt ist und hier im Forum in code-Tags steht.
Wenn du deine case-Reihe da kürzer und eleganter gestalten willst: Versuch mal, das Zahlenwort zusammenzusetzen. Im Kopf machst du das ja auch so.

-
Ok, danke, versuche es mal.
-
Die Genauigkeit der Fließkommazahlen ist immer so ein Problem. Ich würde wohl wie Dobi auch ungefähr prüfen, oder versuchen das Komma ganz weg zu bekommen. Ansonsten kannst du mal schauen, ob das hier intressant für dich ist.
-
@tschabos
Als Übungsgruppenleiter würde ich Dir für so eine Gewaltlösung keine Punkte geben.
Stell Dir vor, die Aufgabe hätte gelautet, die Zahlen bis 10000 "schriftlich" auszugeben. Was dann?
-
So, habe es zumindest einmal unschön hinbekommen, jetzt bin ich noch dabei die Switchanweisung auseinander zu nehmen, werde das fertige Program noch posten. Danke für eure Hilfe und Tipps, ich hoffe der code ist in code-tags.
Gruss Sebi
[code] //Aufgabe4.cpp #include <iostream> #include <climits> #include <cmath> using namespace std; int main(void) { using namespace std; cout << "Geben sie eine positive, zweistellige Zahl mit maximal einer Nachkommastelle ein, um die Zahl ausgeschrieben zurueck zu erhalten" << endl; double eingabe; //definiere variable mit typ double. cin >> eingabe; //gebe double ein int inteingabe; //definiere variable inteingabe mit typ int. inteingabe = eingabe; //int entspricht eingabe. int zehnkeinkommaeingabe; zehnkeinkommaeingabe = eingabe; zehnkeinkommaeingabe = 10*zehnkeinkommaeingabe; //mit diesem schritt wird der zehnkeinkommaeingabe int variablen der wert von der double variable ohne kommazahlen gegeben und verzehnfacht. double kommaeingabe; kommaeingabe = 10*eingabe; int zehnkommaeingabe = kommaeingabe; //mit diesem schritt wird einer double kommaeingabe variablen der 10fache wert der eingabe double variablen zugewiesen, dann wird sie in eine int variable umgewandelt um allfällige abweichungen zu streichen. switch (inteingabe) //switch mit der int variablen inteingabe. dabei wird die zahl ohne kommastellen ausgeschrieben { case 0: cout <<"null"; break; case 1: cout <<"eins"; break; case 2: cout <<"zwei"; break; case 3: cout <<"drei"; break; case 4: cout <<"vier"; break; case 5: cout <<"fuenf"; break; case 6: cout <<"sechs"; break; case 7: cout <<"sieben"; break; case 8: cout <<"acht"; break; case 9: cout <<"neun"; break; case 10: cout <<"zehn"; break; case 11: cout <<"elf"; break; case 12: cout <<"zwoelf"; break; case 13: cout <<"dreizehn"; break; case 14: cout <<"vierzehn"; break; case 15: cout <<"fuenfzehn"; break; case 16: cout <<"sechszehn"; break; case 17: cout <<"siebzehn"; break; case 18: cout <<"achtzehn"; break; case 19: cout <<"neunzehn"; break; case 20: cout <<"zwanzig"; break; case 21: cout <<"einsundzwanzig"; break; case 22: cout <<"zweiundzwanzig"; break; case 23: cout <<"dreiundzwanzig"; break; case 24: cout <<"vierundzwanzig"; break; case 25: cout <<"fuenfundzwanzig"; break; case 26: cout <<"sechsundzwanzig"; break; case 27: cout <<"siebenundzwanzig"; break; case 28: cout <<"achtundzwanzig"; break; case 29: cout <<"neunundzwanzig"; break; case 30: cout <<"dreissig"; break; case 31: cout <<"einunddreissig"; break; case 32: cout <<"zweiunddreissig"; break; case 33: cout <<"dreiunddreissig"; break; case 34: cout <<"vierunddreissig"; break; case 35: cout <<"fuenfunddreissig"; break; case 36: cout <<"sechsunddreissig"; break; case 37: cout <<"siebenunddreissig"; break; case 38: cout <<"achtunddreissig"; break; case 39: cout <<"neununddreissig"; break; case 40: cout <<"vierzig"; break; case 41: cout <<"einsundvierzig"; break; case 42: cout <<"zweiundvierzig"; break; case 43: cout <<"dreiundvierzig"; break; case 44: cout <<"vierundvierzig"; break; case 45: cout <<"fuenfundvierzig"; break; case 46: cout <<"sechsundvierzig"; break; case 47: cout <<"siebenundvierzig"; break; case 48: cout <<"achtundvierzig"; break; case 49: cout <<"neunundvierzig"; break; case 50: cout <<"fuenfzig"; break; case 51: cout <<"einundfuenfzig"; break; case 52: cout <<"zweiundfuenfzig"; break; case 53: cout <<"dreiundfuenfzig"; break; case 54: cout <<"vierundfuenfzig"; break; case 55: cout <<"fuenfundfuenfzig"; break; case 56: cout <<"sechsundfuenfzig"; break; case 57: cout <<"siebenundfuenfzig"; break; case 58: cout <<"achtundfuenfzig"; break; case 59: cout <<"neunundfuenfzig"; break; case 60: cout <<"sechzig"; break; case 61: cout <<"einundsechzig"; break; case 62: cout <<"zweiundsechzig"; break; case 63: cout <<"dreiundsechzig"; break; case 64: cout <<"vierundsechzig"; break; case 65: cout <<"fuenfundsechzig"; break; case 66: cout <<"sechsundsechzig"; break; case 67: cout <<"siebenundsechzig"; break; case 68: cout <<"achtundsechzig"; break; case 69: cout <<"neunundsechzig"; break; case 70: cout <<"siebzig"; break; case 71: cout <<"einundsiebzig"; break; case 72: cout <<"zweiundsiebzig"; break; case 73: cout <<"dreiundsiebzig"; break; case 74: cout <<"vierundsiebzig"; break; case 75: cout <<"fuenfundsiebzig"; break; case 76: cout <<"sechsundsiebzig"; break; case 77: cout <<"siebenundsiebzig"; break; case 78: cout <<"achtundsiebzig"; break; case 79: cout <<"neunundsiebzig"; break; case 80: cout <<"achtzig"; break; case 81: cout <<"einundachtzig"; break; case 82: cout <<"zweiundachtzig"; break; case 83: cout <<"dreiundachtzig"; break; case 84: cout <<"vierundachtzig"; break; case 85: cout <<"fuenfundachtzig"; break; case 86: cout <<"sechsundachtzig"; break; case 87: cout <<"siebenundachtzig"; break; case 88: cout <<"achtundachtzig"; break; case 89: cout <<"neunundachtzig"; break; case 90: cout <<"neunzig"; break; case 91: cout <<"einundneunzig"; break; case 92: cout <<"zweiundneunzig"; break; case 93: cout <<"dreiundneunzig"; break; case 94: cout <<"vierundneunzig"; break; case 95: cout <<"fuenfundneunzig"; break; case 96: cout <<"sechsundneunzig"; break; case 97: cout <<"siebenundneunzig"; break; case 98: cout <<"achtundneunzig"; break; case 99: cout <<"neunundneunzig"; break; default: cout <<"You insert a wrong number!"; break; } if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 1) //mit dieser if-anweisung wird kontrolliert, ob die zahl kommastellen besitzt, wenn ja werden sie angehängt an die zahl aus der switch-anweisung. { cout <<"kommaeins"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 2) { cout <<"kommazwei"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 3) { cout <<"kommadrei"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 4) { cout <<"kommavier"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 5) { cout <<"kommafuenf"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 6) { cout <<"kommasechs"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 7) { cout <<"kommasieben"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 8) { cout <<"kommaacht"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 9) { cout <<"kommaneun"; } cin.get(); cin.get(); return 0; }
-
Nicht ganz.
Am Anfang deines Codes mussstehen und am Ende
-
Schau dir noch einmal die Antwort von NichtGut an.
Ich würde es wahrscheinlich so machen, dass ich in einen double einlesen würde und Vor- und Nachkommazahlen getrennt in zwei Integern speichern würde:// pseudo double einlesen double *= 10 unsigned vorkomma = double unsigned nachkomma = vorkomma % 10 vorkomma /= 10Und jetzt könntest du dir den von Freaky geposteten Link anschauen und mal nachsehen, wie es dort gemacht wurde (die Lösung dürfte aus dem "C++ Codebook" kommen).
Was du da gemacht hast, ist zwar auch mit Arbeit verbunden, aber mit kreativer oder genialer Programmierung oder überhaupt mit Programmierung hat das natürlich nichts zu tun.
-
Der Aufgabensteller weiß wahrscheinlich selber nicht, wie man die Aufgabe in C++ löst. Sonst hätte er sie nicht als Übungsaufgabe gestellt.
Man muss dazu wissen, dass ein std::ostream über sogenannte Facetten verfügt, die u.a. dafür zuständig sind, Zahlen in eine Folge von Zeichen umzuwandeln. Das macht die Facette std::num_put.
Normalerweise werden Facetten dafür verwendet, die verschiedenen Ausgabeformate verschiedener Kulturen zu handeln. Im einfachsten Fall den Dezimaltrenner, der im angelsächsischen ein '.' und im deutschsprachigen Bereich ein ',' ist.Aber man kann num_put auch dafür verwenden, Zahlen irgendwie - also auch als Text - auszugeben. Die Anwendung ist noch übersichtlich:
#include <iostream> #include "MyNumPut.h" // (s.u.) int main() { using namespace std; cout.imbue( locale( cout.getloc(), new MyNumPut ) ); cout << "Geben Sie bitte zwei Zahlen ein" << endl; for( double zahl1, zahl2; cout << "> ", cin >> zahl1 >> zahl2; ) cout << zahl1 << " / " << zahl2 << " = " << (zahl1/zahl2) << endl; return 0; }Hier eine kleines Programm, welches zwei Zahlen dividiert. Wäre die Zeile 7 nicht vorhanden, könnte die Ausgabe z.B. sein:
Geben Sie bitte zwei Zahlen ein > 89 19 89 / 19 = 4.68421 > 100 11 100 / 11 = 9.09091 >das ist erstmal nichts besonderes. Aber mit der Zeile 7 kann daraus werden:
Geben Sie bitte zwei Zahlen ein > 89 19 neunundachtzig / neunzehn = vier-komma-sieben > 100 11 hundert / elf = neun-komma-eins >man achte auf die korrekte Rundung.
Und die komische Datei "MyNumPut.h" enthält eine von num_put abgeleitete Facette, die die Ausgabe eines double generiert.
// MyNumPut.h #pragma once #include <algorithm> // copy #include <string> #include <locale> // std::num_put<> class MyNumPut : public std::num_put< char > { public: explicit MyNumPut( std::size_t refs = 0 ) : std::num_put< char >( refs ) {} protected: virtual iter_type do_put( iter_type out, std::ios_base& str, char_type /*fill*/, double val ) const { using namespace std; const string ziffern[] = { "null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwölf", }; if( val < 0 || val > 100 ) { const string unbekannt = "???"; out = copy( unbekannt.begin(), unbekannt.end(), out ); // str.setstate( ios_base::failbit ); // kann man nachen; muss man nicht return out; } val += 0.05; // wg. korrektem Runden auf eine Dezimalstelle nach dem Komma if( val >= 100. ) { const string hundert = "hundert"; out = copy( hundert.begin(), hundert.end(), out ); } else { const int valInt = int( val ); if( valInt <= 12 ) { out = copy( ziffern[valInt].begin(), ziffern[valInt].end(), out ); } else { const int zehner = valInt / 10; const int einer = valInt % 10; if( einer != 0 ) { out = copy( ziffern[einer].begin(), einer == 1? ziffern[einer].end()-1: ziffern[einer].end(), out ); if( zehner > 1 ) { const string und = "und"; out = copy( und.begin(), und.end(), out ); } } if( zehner <= 2 ) { const string zz[] = { "zehn", "zwanzig" }; out = copy( zz[zehner-1].begin(), zz[zehner-1].end(), out ); } else { out = copy( ziffern[zehner].begin(), ziffern[zehner].end(), out ); const string zig = "zig"; out = copy( zig.begin(), zig.end(), out ); } } // -- Nachkommastelle const int nk = int( 10 * (val - double(valInt)) ); if( nk > 0 ) { const string komma = "-komma-"; out = copy( komma.begin(), komma.end(), out ); out = copy( ziffern[nk].begin(), ziffern[nk].end(), out ); } } if( out.failed() ) str.setstate( ios_base::failbit ); return out; } };hatten wir schon mal hier.
Gruß
Werner
-
Hier noch mein fertiges Programm:
[code] //Aufgabe4.cpp #include <iostream> #include <climits> #include <cmath> using namespace std; int main(void) { using namespace std; cout << "Geben sie eine positive, zweistellige Zahl mit maximal einer Nachkommastelle" <<endl; cout << "ein, um die Zahl ausgeschrieben zurueck zu erhalten:" << endl; cout << endl; double eingabe; //definiere variable mit typ double. cin >> eingabe; //gebe double ein if ((eingabe < 0) || (eingabe > 99)) { cout << "You choose a illegal number!" << endl; cin.get(); cin.get(); return 0; } cout << endl; int loeschen; loeschen = eingabe; loeschen = loeschen*10; int loeschen2; loeschen2 = loeschen/100; int inteingabeeiner; //definiere variable inteingabe mit typ int. inteingabeeiner = ((loeschen - (loeschen2*100))/10); //int entspricht eingabe. int inteingabezehner; inteingabezehner = eingabe; inteingabezehner = inteingabezehner/10; int inteingabeund; inteingabeund = eingabe; int zehnkeinkommaeingabe; zehnkeinkommaeingabe = eingabe; zehnkeinkommaeingabe = 10*zehnkeinkommaeingabe; //mit diesem schritt wird der zehnkeinkommaeingabe int variablen der wert von der double variable ohne kommazahlen gegeben und verzehnfacht. double kommaeingabe; kommaeingabe = 10*eingabe; int zehnkommaeingabe = kommaeingabe; //mit diesem schritt wird einer double kommaeingabe variablen der 10fache wert der eingabe double variablen zugewiesen, dann wird sie in eine int variable umgewandelt um allfaellige abweichungen zu streichen. if ( (inteingabeund != 0) && (inteingabeund != 1) && (inteingabeund != 11) && (inteingabeund != 12) && (inteingabeund != 16) && (inteingabeund != 17) ) { switch (inteingabeeiner) //switch mit der int variablen inteingabe. dabei wird die zahl ohne kommastellen ausgeschrieben { case 1: cout <<"ein"; break; case 2: cout <<"zwei"; break; case 3: cout <<"drei"; break; case 4: cout <<"vier"; break; case 5: cout <<"fuenf"; break; case 6: cout <<"sechs"; break; case 7: cout <<"sieben"; break; case 8: cout <<"acht"; break; case 9: cout <<"neun"; break; } if ( (inteingabeund > 20) && ((inteingabeund != 30) && (inteingabeund != 40) && (inteingabeund != 50) && (inteingabeund != 60) && (inteingabeund != 70) && (inteingabeund != 80) && (inteingabeund != 90)) ) { cout << "und"; } switch (inteingabezehner) { case 0: break; case 1: cout <<"zehn"; break; case 2: cout <<"zwanzig"; break; case 3: cout <<"dreissig"; break; case 4: cout <<"vierzig"; break; case 5: cout <<"fuenfzig"; break; case 6: cout <<"sechzig"; break; case 7: cout <<"siebzig"; break; case 8: cout <<"achtzig"; break; case 9: cout <<"neunzig"; break; } } else if (inteingabeund == 0) { cout << "null"; } else if (inteingabeund == 1) { cout << "eins"; } else if (inteingabeund == 11) { cout << "elf"; } else if (inteingabeund == 12) { cout << "zwölf"; } else if (inteingabeund == 16) { cout << "sechzehn"; } else if (inteingabeund == 17) { cout << "siebzehn"; } if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 1) //mit dieser if-anweisung wird kontrolliert, ob die zahl kommastellen besitzt, wenn ja werden sie angehaengt an die zahl aus der switch-anweisung. { cout <<"kommaeins"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 2) { cout <<"kommazwei"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 3) { cout <<"kommadrei"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 4) { cout <<"kommavier"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 5) { cout <<"kommafuenf"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 6) { cout <<"kommasechs"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 7) { cout <<"kommasieben"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 8) { cout <<"kommaacht"; } else if (((zehnkommaeingabe) - (zehnkeinkommaeingabe)) == 9) { cout <<"kommaneun"; } cin.get(); cin.get(); return 0; }
-
Das sieht doch schon schöner aus.
Wenn du Spaß dran hast, könntest du jetzt noch (obwohl es leider nicht "Einsundfünfzig" usw. heißt) die Zahlenwortgenerierung für die Einerstellen und den Nachkommakram (z.B. in eine Funktion) zusammenfassen.
Werner hat das in seiner Superlösung in Zeile 59 gemacht.