Zahl in Wort umwandeln
-
Hallo zusammen
Ich hätte da mal ne Frage. Und zwar wollte ich wissen wie man das programmiert.
z.B. --> Ich gebe eine Zahl ein (20) und als Resultat kommt zwanzig raus.
Das ganze muss ich in C++ screiben (Konsolenanwendung). Es müssen nur ganze zahlen eingegeben werden. ( nur von 0 bis 99)Ich habe aber keinen blasen wie ich anfangen sollte. Ich muss das ganze am Montag fertig haben. Ich wäre demjenigen der mir helfen kann von Herzen dankbar.
MFG
nami :p
-
dein ansatz?
-
Keiner wird die deine Hausaufgaben einfach vor die Füße schmeißen. Punkt. Lies die mit wichtig gekennzeichneten Threads, nimm dir zu Herzen, was dort steht, und frag dann nochmal. Ordentlich.
-
Naja man könnte natürlich einfach 99 if anweisungen machen(kann man switch nehmen?Geht das mit string?) aber das würde wahrscheinlich dauern... Aber bis Montag schaffst du das schon^^
-
Finn schrieb:
(kann man switch nehmen?Geht das mit string?)
Ja / Nein
Tipp:
std::map
.
-
Nein man kann mit switch keine Strings bearbeiten. 100 if's kämen ein bisschen hässlig. Ich würde es in eine Datei schreiben:
0 null
1 eins
2 zweiDamit machst du weiter und kannst über ein Programm jede Zeile auslesen. Wenn die Zahl 45 ist, suchst du jede Zeile ab nach 45(es sei denn du machst es sotiert und von 0 bis 99) und nimmst den String der danach kommt und liest ihn aus.
-
FreakY<3Cpp schrieb:
Damit machst du weiter und kannst über ein Programm jede Zeile auslesen. Wenn die Zahl 45 ist, suchst du jede Zeile ab nach 45(es sei denn du machst es sotiert und von 0 bis 99) und nimmst den String der danach kommt und liest ihn aus.
Hmmm... fände ich ziemlich umständlich. Ich meine, wenn man sich mal z. B. die folgenden Zahlenwörter anschaut, dann fällt einem doch etwas auf:
vierundzwanzig
vierunddreißig
vierundvierzig
...
In diese Richtung würde zumindest mein Lösungsansatz gehen. So, mehr wird aber von mir nicht verraten
-
ICh weiss nicht wie ich das ganze aufbaun soll. Keinerlei struktur.
Ich bräuchte nur einpaar anhaltspunkte. Eine klare struktur halt.
ICh weiss einfach nicht wie ich es lösen soll. Wär echt nett wen jemand ein kleines beispiel machen würde. nur 1 zahl ( wenn möglich)MFG nami
-
int zahl; cin>>zahl; int einer=zahl%10; int zehner=zahl/10; if(zehner<2){ ififififififif oder switch (zahl oder cout<<name[zahl] } else{ cout<<einername[einer]<<"und"<<einername[zehner]; }
-
nami22 schrieb:
MFG
nami :pMein Vorschlag:
#include <iostream> #include <sstream> #include <string> using namespace std; int main() { const string zahlen("null eins zwei drei vier fünf " "sechs sieben acht neun zehn elf zwölf"); istringstream is(zahlen); int zahl = 13; cout << "Bitte eine Zahl eingeben (0 - 12)" << endl; cin >> zahl; string ausgabe; if (zahl > -1 && zahl < 13) do { is >> ausgabe; }while(zahl--); else ausgabe = "ungueltig!"; cout << "Eingabe war " << ausgabe << "." << endl; return 0; }
mfg
-
Nicht C++, aber vielleicht für einen Ansatz hinreichend: http://www.navision-blog.de/2007/03/13/betrag-in-worten-angeben-zb-fr-einen-verrechnungsscheck/
-
ehm danke viel mal aber wäre es auch möglich das ganze mit arrays zu lösen. Dies sind die Anforderungen.
Falls ja ? Wie gena
MFG nami
-
egon2 schrieb:
ehmgeht das auch mit arrys? Falls ja wie muss ich das angehen ?
MF¨G
nami ( sry falls ich zu viel verlange, habe aber keine andere wahl mehr)nami22 schrieb:
MFG
nami :pMein Vorschlag:
#include <iostream> #include <sstream> #include <string> using namespace std; int main() { const string zahlen("null eins zwei drei vier fünf " "sechs sieben acht neun zehn elf zwölf"); istringstream is(zahlen); int zahl = 13; cout << "Bitte eine Zahl eingeben (0 - 12)" << endl; cin >> zahl; string ausgabe; if (zahl > -1 && zahl < 13) do { is >> ausgabe; }while(zahl--); else ausgabe = "ungueltig!"; cout << "Eingabe war " << ausgabe << "." << endl; return 0; }
mfg
-
nami22 schrieb:
ehm danke viel mal aber wäre es auch möglich das ganze mit arrays zu lösen. Dies sind die Anforderungen.
Falls ja ? Wie gena
MFG namiJetzt bist Du gefordert, die Lektionen zu Arrays und zu if nochmal zu lesen und die kleinen Übungsaufgaben zu machen. Dann sollte es Dir kein Problem sein, meinen Entwurf zu vervollständigen.
-
Kööntest du mir wenigstens den Code den du geschrieben hast kommentieren.
Würde mir echt weiterhelfen.MFG
nami
-
was ich mit jetzt frage ist, wie lässt er die ganzen namen der zahlen ins prog fließen ?
Mir fiele nur folgende Möglichkeiten ein:
1. alle vorher definieren ungefähr so:std::string Zahlname[100]; Zahlname[1] = "eins"; //...
das wäre sehr unschick und unschön.
2. das mit der textdatei find ich besonders schön und ist erweiterbar.ifstream datei; std::string line; int i; int zahl; datei.open("list.txt"); while (std::getline(datei,line)) { i++; Zahlname[i] = line; } datei.close(); cout << "Zahl: "; cin >> zahl; cout << Zahlname[zahl]; cin.get;
oder so ähnlich.
-
Quick and dirty:
#include <iostream> #include <sstream> #include <string> std::string numToStr(const std::string& zahl); int main() { for (unsigned int i = 1; i <= 100; ++i) { std::stringstream strm; strm << i; std::cout << i << " = " << numToStr(strm.str()) << std::endl; } return 0; } std::string numToStr(const std::string& zahl) { std::string spezial[19]; std::string hunderter[9]; spezial[0] = "ein"; spezial[1] = "zwei"; spezial[2] = "drei"; spezial[3] = "vier"; spezial[4] = "fuenf"; spezial[5] = "sechs"; spezial[6] = "sieben"; spezial[7] = "acht"; spezial[8] = "neun"; spezial[9] = "zehn"; spezial[10] = "elf"; spezial[11] = "zwoelf"; spezial[12] = "dreizehn"; spezial[13] = "vierzehn"; spezial[14] = "fuenfzehn"; spezial[15] = "sechszehn"; spezial[16] = "siebzehn"; spezial[17] = "achtzehn"; spezial[18] = "neunzehn"; hunderter[0] = "zwanzig"; hunderter[1] = "dreisssig"; hunderter[2] = "vierzig"; hunderter[3] = "fuenfzig"; hunderter[4] = "sechszig"; hunderter[5] = "siebzig"; hunderter[6] = "achtzig"; hunderter[7] = "neunzig"; hunderter[8] = "hundert"; std::string zahlwort; if (zahl.length() == 1) { zahlwort = spezial[zahl[0] - '0' - 1]; if (zahl[0] == '1') { zahlwort += "s"; } } else if (zahl.length() == 2) { if (atoi(zahl.c_str()) <= 19) { zahlwort = spezial[atoi(zahl.c_str()) - 1]; } else if (atoi(zahl.c_str()) > 19) { if (zahl[1] != '0') { zahlwort = spezial[zahl[1] - '0' - 1] + "und" + hunderter[zahl[0] - '0' - 2]; } else { zahlwort = hunderter[zahl[0] - '0' - 2]; } } } else if (zahl.length() == 3) { if (zahl == "100") { zahlwort = hunderter[8]; } } return zahlwort; }
-
danke das funktioniert echt toll. Aber ich verstehe den code nicht wirklich.
Vorallem bei den if anweisungen, wass du dort gemacht hast.
Falls du zeiot hättest köntest du den code kommentieren (//......)??MFG und vielen Dank
nami
-
nami22 schrieb:
danke das funktioniert echt toll. Aber ich verstehe den code nicht wirklich.
Vorallem bei den if anweisungen, wass du dort gemacht hast.
Falls du zeiot hättest köntest du den code kommentieren (//......)??Eigentlich sollte es eine Forenregel geben, dass jemand einen Mindesteinsatz zeigen MUSS, bevor ihm die Hausaufgaben gemacht werden. Das wird ja langsam peinlich hier.
Bis Montag könntest du dir ein Buch schnappen, das nötige C++ lernen und diese 0815-Aufgabe locker selbst erledigen, wenn du nur ein Funken Interesse daran hättest.
-
Ich habe interesse daran lese bücher übe mit video2brain habe scho die strings ertellt und deklariert aber wie die ausgabe stttfinden soll da komm ich nicht draus.
MFG
nami