Tageszeit Projekt -> Zeitausagbe in Worten
-
Hm...
ich hatte nun euren Code in die daytime.cpp eingesetzt. Dann hab ich noch in der daytime.h unter public int hour12(); eingetragen
Wenn Du Dir meinen Code ansiehst, wirst Du sehen, das die Uhrzeit auch in Bit ausgegeben wird.
Diese Funktion würde ich gern dadurch ersetzen, das es nicht in Bit sondern in Worten ausgegeben wird ^^
-
die hour12 brauchst du nicht als Element deiner Klasse, das reicht, wenn du sie lokal in der entsprechenden Ausgabemethode definierst:
//neue Methode: void daytime::printHourText() { int hour12 = (( hour==0 || hour==12 ) ? 12 : hour % 12 ) string hourWords[] = {"", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf" }; cout << hourWords[hour12]<<" Uhr\n"; } //im Hauptprogramm ... daytime stunde; stunde setHMS(12,0,0); cout<<"Es ist jetzt "; stunde.printHourText();
-
hm.. ich bekomme folgenden Fehler beim kompilieren
Compiling...
daytime.cpp
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_05_05\Class2_Daytime\daytime.cpp(146) : error C2146: syntax error : missing ';' before identifier 'string'
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_05_05\Class2_Daytime\daytime.cpp(146) : error C2146: syntax error : missing ';' before identifier 'hourWords'
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_05_05\Class2_Daytime\daytime.cpp(146) : error C2275: 'string' : illegal use of this type as an expression
c:\programme\microsoft visual studio\vc98\include\xstring(612) : see declaration of 'string'
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_05_05\Class2_Daytime\daytime.cpp(146) : error C2065: 'hourWords' : undeclared identifier
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_05_05\Class2_Daytime\daytime.cpp(146) : error C2059: syntax error : ']'
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_05_05\Class2_Daytime\daytime.cpp(146) : error C2143: syntax error : missing ';' before '{'
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_05_05\Class2_Daytime\daytime.cpp(147) : error C2143: syntax error : missing ';' before '}'
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_05_05\Class2_Daytime\daytime.cpp(148) : error C2109: subscript requires array or pointer type
Error executing cl.exe.Class2_Daytime.exe - 8 error(s), 0 warning(s)
daytime.cpp
// File: daytime.cpp: implementation of the daytime class. // Author: Gunnar Goebel // Date: 06-04-28 // Version 1.0 // Copyright: This File is released under a creative Common Licence. See Link for further Information // Licence Link: http://creativecommons.org/licenses/by-nc-sa/2.0/de/ ////////////////////////////////////////////////////////////////////// #include "daytime.h" #include <iostream> #include <cassert> #include <string> using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// int daytime::NumberOfTimeObjekts = 0; daytime::daytime() { ++ NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } daytime::~daytime() { -- NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } void daytime::print24hFormat() { cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second; } void daytime::print12hFormat() { cout << (( hour==0 || hour==12 ) ? 12 : hour % 12 ) << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second << ( hour < 12 ? " AM" : " PM" ); } void daytime::setHMS(int HMShour, int HMSminute, int HMSsecond) { // check if hour >=0 and <24 assert(HMShour < 24 && HMShour >= 0); // check if minute >=0 and <60 assert(HMSminute < 60 && HMSminute >= 0); // check if second >=0 and <60 assert(HMSsecond < 60 && HMSsecond >= 0); hour = HMShour; minute = HMSminute; second = HMSsecond; } void daytime::endTime() { cout << "Abendessen endet um: "; cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second <<endl; } int daytime::getTimeInSeconds() { int sec; sec = hour*60*60 + minute*60 + second; return sec; } void daytime::setS(int sec) { assert(sec < 86401); hour = sec/3600; sec = sec%3600; minute = sec/60; second = sec%60; } void daytime::printHourText() { int hour12 = (( hour==0 || hour==12 ) ? 12 : hour % 12 ) string hourWords[] = {"", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf" }; cout << hourWords[hour12]<<" Uhr\n"; } /*void daytime::timeInBit() { int number, number1, number2, number3, number4, number5; number = hour; number5 = number%2; number = number/2; number4 = number%2; number = number/2; number3 = number%2; number = number/2; number2 = number%2; number = number/2; number1 = number%2; number = number/2; number = number%2; cout << number << number1 << number2 << number3 << number4 << number5 << " : "; number = minute; number5 = number%2; number = number/2; number4 = number%2; number = number/2; number3 = number%2; number = number/2; number2 = number%2; number = number/2; number1 = number%2; number = number/2; number = number%2; cout << number << number1 << number2 << number3 << number4 << number5 << " : "; number = second; number5 = number%2; number = number/2; number4 = number%2; number = number/2; number3 = number%2; number = number/2; number2 = number%2; number = number/2; number1 = number%2; number = number/2; number = number%2; cout << number << number1 << number2 << number3 << number4 << number5 << endl; } */ int getDurationInSeconds(daytime end, daytime begin) { int durationInSeconds; durationInSeconds = end.getTimeInSeconds() - begin.getTimeInSeconds(); return durationInSeconds; }main.cpp
////////////////////////////////////////////////////////////////////// // File: main.cpp // Author: Gunnar Goebel // Date: 06-04-28 // Version 1.0 // Copyright: This File is released under a creative Common Licence. See Link for further Information // Licence Link: http://creativecommons.org/licenses/by-nc-sa/2.0/de/ ////////////////////////////////////////////////////////////////////// #include "daytime.h" #include <iostream> using std::cout; using std::endl; int getDurationInSeconds(daytime, daytime); int main() { daytime begin, end, duration; // define Starttime: 18:05:00 begin.setHMS(18,5,0); cout << "Das Abendessen beginnt um: "; // Display Time in 24h begin.print24hFormat(); cout << " oder in Bit: "; begin.printHourText(); // define Endtime: 20:14:10 end.setHMS(20,40,59); cout << "Das Abendessen endet um: "; // Display Time in 24h end.print24hFormat(); cout << " oder in Bit: "; end.timeInBit(); // calculate Time between Start an End int durationInSeconds = getDurationInSeconds(end, begin); // Display Time in hours, minutes and seconds duration.setS(durationInSeconds); cout << "Das Abendessen dauert: "; // Display Time in 24h duration.print24hFormat(); cout << " oder in Bit: "; duration.timeInBit(); return 0; }daytime.h
// daytime.h: interface for the daytime class. // ////////////////////////////////////////////////////////////////////// #pragma once class daytime { private: int hour; int minute; int second; static int NumberOfTimeObjekts; public: daytime(); ~daytime(); void print12hFormat(); void print24hFormat(); void setHMS(int, int, int); void endTime(); int getTimeInSeconds(); void setS(int); void timeInBit(); void daytime::printHourText(); };
-
Das steht doch genau, was er will "missing ';' before identifier 'string'" - am Ende der vorigen Zeile fehlt das Semikolon (sorry). Alles andere dürften dann Folgefehler sein.
(und in der Klassendeklaration ist das "daytime::" vor dem Methodennamen überflüssig)
-
oh hm habs selber gelöst,
aber wie bekomme ich nun noch die anzeige der Minuten und Sekunden hin? einfach funktion kopieren und hour12 durch minute60 ersetzen bzw das anpassen?
-
Für Minuten und Sekunden benötigst du ein etwas größeres Array (mit den Strings von "eins" bis "neunundfünfzig") oder du mußt die Zahl passend zerlegen und stückweise umsetzen.
(ich hab' noch irgendwo zu Hause ein Pascal-Programm, das Zahlen bis 1 Million als Text darstellen konnte)
-
Hm... bei Minuten hab ich es noch hinbekommen (mal abgesehen davon, das sie nicht bis 59 definiert sind), aber bei den sekunden sagt mri der kompiler keine fehler, führt das programm aus und dann kackt die konsole ab und ich kann nur schließen
Class2_Daytime.exe hat ein Problem festgestellt und muss beendet werden.
// File: daytime.cpp: implementation of the daytime class. // Author: Gunnar Goebel // Date: 06-04-28 // Version 1.0 // Copyright: This File is released under a creative Common Licence. See Link for further Information // Licence Link: http://creativecommons.org/licenses/by-nc-sa/2.0/de/ ////////////////////////////////////////////////////////////////////// #include "daytime.h" #include <iostream> #include <cassert> #include <string> using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// int daytime::NumberOfTimeObjekts = 0; daytime::daytime() { ++ NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } daytime::~daytime() { -- NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } void daytime::print24hFormat() { cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second; } void daytime::print12hFormat() { cout << (( hour==0 || hour==12 ) ? 12 : hour % 12 ) << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second << ( hour < 12 ? " AM" : " PM" ); } void daytime::setHMS(int HMShour, int HMSminute, int HMSsecond) { // check if hour >=0 and <24 assert(HMShour < 24 && HMShour >= 0); // check if minute >=0 and <60 assert(HMSminute < 60 && HMSminute >= 0); // check if second >=0 and <60 assert(HMSsecond < 60 && HMSsecond >= 0); hour = HMShour; minute = HMSminute; second = HMSsecond; } void daytime::endTime() { cout << "Abendessen endet um: "; cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second <<endl; } int daytime::getTimeInSeconds() { int sec; sec = hour*60*60 + minute*60 + second; return sec; } void daytime::setS(int sec) { assert(sec < 86401); hour = sec/3600; sec = sec%3600; minute = sec/60; second = sec%60; } void daytime::printHourText() { int hour12 = (( hour==0 || hour==12 ) ? 12 : hour % 12 ); string hourWords[] = {"", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf" }; cout << hourWords[hour12]<<" Uhr\n"; } void daytime::printMinuteText() { int minute60 = (( minute==0 || minute==60 ) ? 60 : minute % 60 ); string minuteWords[] = {"", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf" }; cout << minuteWords[minute60]<<" Minuten\n"; } void daytime::printSecondText() { int second60 = (( second==0 || second==60 ) ? 60 : second % 60 ); string secondWords[] = {"", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf" }; cout << secondWords[second60]<<" Sekunden\n"; } /*void daytime::timeInBit() { int number, number1, number2, number3, number4, number5; number = hour; number5 = number%2; number = number/2; number4 = number%2; number = number/2; number3 = number%2; number = number/2; number2 = number%2; number = number/2; number1 = number%2; number = number/2; number = number%2; cout << number << number1 << number2 << number3 << number4 << number5 << " : "; number = minute; number5 = number%2; number = number/2; number4 = number%2; number = number/2; number3 = number%2; number = number/2; number2 = number%2; number = number/2; number1 = number%2; number = number/2; number = number%2; cout << number << number1 << number2 << number3 << number4 << number5 << " : "; number = second; number5 = number%2; number = number/2; number4 = number%2; number = number/2; number3 = number%2; number = number/2; number2 = number%2; number = number/2; number1 = number%2; number = number/2; number = number%2; cout << number << number1 << number2 << number3 << number4 << number5 << endl; } */ int getDurationInSeconds(daytime end, daytime begin) { int durationInSeconds; durationInSeconds = end.getTimeInSeconds() - begin.getTimeInSeconds(); return durationInSeconds; }
-
Du hast ein Array mit (aktuell) 13 Elementen - wenn du jetzt einen Sekundenwert über 12 ausgeben willst, liest du von Speicher, der dir nicht gehört - und das ergibt undefiniertes Verhalten (dein Programm interpretiert irgendwelche Mülldaten als "string"-Objekt).
Versuch's mal in etwa so:
//global in der daytime.cpp static string numbers[]= {"null","ein","zwei","drei",...,"achtundfünfzig","neunundfünfzig"}; //ich weiß, das ist eine Menge Schreibarbeit, alle Zahlwörter zusammenzutragen void daytime::printHour12() { int h12 = (( hour==0 || hour==12 ) ? 12 : hour % 12 ); cout << numbers[h12] << " Uhr"; } void daytime::printHour24() {cout << numbers[hour] << " Uhr";} void daytime::printMinute() {cout << numbers[minute] << (minute==1)?" Minute":" Minuten";} void daytime::printSecond() {cout << numbers[second] << (second==1)?" Sekunde":" Sekunden";}
-
so nun mal das komplette Porjekt so wie es fertig ist, compiler meckert nicht, das Programm stürzt aber ab

daytime.cpp
// File: daytime.cpp: implementation of the daytime class. // Author: Gunnar Goebel // Date: 06-04-28 // Version 1.0 // Copyright: This File is released under a creative Common Licence. See Link for further Information // Licence Link: http://creativecommons.org/licenses/by-nc-sa/2.0/de/ ////////////////////////////////////////////////////////////////////// #include "daytime.h" #include <iostream> #include <cassert> #include <string> using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// int daytime::NumberOfTimeObjekts = 0; daytime::daytime() { ++ NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } daytime::~daytime() { -- NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } void daytime::print24hFormat() { cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second; } void daytime::print12hFormat() { cout << (( hour==0 || hour==12 ) ? 12 : hour % 12 ) << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second << ( hour < 12 ? " AM" : " PM" ); } void daytime::setHMS(int HMShour, int HMSminute, int HMSsecond) { // check if hour >=0 and <24 assert(HMShour < 24 && HMShour >= 0); // check if minute >=0 and <60 assert(HMSminute < 60 && HMSminute >= 0); // check if second >=0 and <60 assert(HMSsecond < 60 && HMSsecond >= 0); hour = HMShour; minute = HMSminute; second = HMSsecond; } void daytime::endTime() { cout << "Abendessen endet um: "; cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second <<endl; } int daytime::getTimeInSeconds() { int sec; sec = hour*60*60 + minute*60 + second; return sec; } void daytime::setS(int sec) { assert(sec < 86401); hour = sec/3600; sec = sec%3600; minute = sec/60; second = sec%60; } void daytime::printHourText() { int hour12 = (( hour==0 || hour==12 ) ? 12 : hour % 12 ); string hourWords[] = {"", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf" }; cout << hourWords[hour12]<<" Uhr\n"; } void daytime::printMinuteText() { int minute60 = (( minute==0 || minute==60 ) ? 60 : minute % 60 ); string minuteWords[] = {"", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf", "dreizehn", "vierzehn", "fuenfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzeh", "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "vierundzwanzig", "fuenfundzwanzig", "sechsundzwanzig", "siebenundzwanzig" "achtundzwanzig", "neunundzwanzig", "dreissig", "einunddreissig", "zweiunddreissig", "dreiunddressig", "vierunddreissig", "fuenfunddreissig", "sechsunddreissig", "siebenunddreissig", "achtunddreissig", "neununddreissig", "vierzig", "einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig", "sechsundvierzig", "siebenundvierzig" "achtundvierzig", "neunundvierzig", "fuenfzig", "einundfuenzig", "zweiundfuenzig", "dreiundfuenzig", "vierundfuenzig", "fuenfundfuenzig", "sechsundfuenzig", "siebenundfuenzig" "achtundfuenzig", "neunundfuenzig",}; cout << minuteWords[minute60]<<" Minuten\n"; } void daytime::printSecondText() { int second60 = (( second==0 || second==60 ) ? 60 : second % 60 ); string secondWords[] = {"", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf", "dreizehn", "vierzehn", "fuenfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzeh", "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "vierundzwanzig", "fuenfundzwanzig", "sechsundzwanzig", "siebenundzwanzig" "achtundzwanzig", "neunundzwanzig", "dreissig", "einunddreissig", "zweiunddreissig", "dreiunddressig", "vierunddreissig", "fuenfunddreissig", "sechsunddreissig", "siebenunddreissig", "achtunddreissig", "neununddreissig", "vierzig", "einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig", "sechsundvierzig", "siebenundvierzig" "achtundvierzig", "neunundvierzig", "fuenfzig", "einundfuenzig", "zweiundfuenzig", "dreiundfuenzig", "vierundfuenzig", "fuenfundfuenzig", "sechsundfuenzig", "siebenundfuenzig" "achtundfuenzig", "neunundfuenzig",}; cout << secondWords[second60]<<" Sekunden\n"; } /*void daytime::timeInBit() { int number, number1, number2, number3, number4, number5; number = hour; number5 = number%2; number = number/2; number4 = number%2; number = number/2; number3 = number%2; number = number/2; number2 = number%2; number = number/2; number1 = number%2; number = number/2; number = number%2; cout << number << number1 << number2 << number3 << number4 << number5 << " : "; number = minute; number5 = number%2; number = number/2; number4 = number%2; number = number/2; number3 = number%2; number = number/2; number2 = number%2; number = number/2; number1 = number%2; number = number/2; number = number%2; cout << number << number1 << number2 << number3 << number4 << number5 << " : "; number = second; number5 = number%2; number = number/2; number4 = number%2; number = number/2; number3 = number%2; number = number/2; number2 = number%2; number = number/2; number1 = number%2; number = number/2; number = number%2; cout << number << number1 << number2 << number3 << number4 << number5 << endl; } */ int getDurationInSeconds(daytime end, daytime begin) { int durationInSeconds; durationInSeconds = end.getTimeInSeconds() - begin.getTimeInSeconds(); return durationInSeconds; }main.cpp
////////////////////////////////////////////////////////////////////// // File: main.cpp // Author: Gunnar Goebel // Date: 06-04-28 // Version 1.0 // Copyright: This File is released under a creative Common Licence. See Link for further Information // Licence Link: http://creativecommons.org/licenses/by-nc-sa/2.0/de/ ////////////////////////////////////////////////////////////////////// #include "daytime.h" #include <iostream> using std::cout; using std::endl; int getDurationInSeconds(daytime, daytime); int main() { daytime begin, end, duration; // define Starttime: 18:05:00 begin.setHMS(18,5,0); cout << "Das Abendessen beginnt um: "; // Display Time in 24h begin.print24hFormat(); cout << " oder in Worten: "; begin.printHourText(); begin.printMinuteText(); begin.printSecondText(); // define Endtime: 20:14:10 end.setHMS(20,40,59); cout << "Das Abendessen endet um: "; // Display Time in 24h end.print24hFormat(); cout << " oder in Worten: "; end.printHourText(); end.printMinuteText(); end.printSecondText(); // calculate Time between Start an End int durationInSeconds = getDurationInSeconds(end, begin); // Display Time in hours, minutes and seconds duration.setS(durationInSeconds); cout << "Das Abendessen dauert: "; // Display Time in 24h duration.print24hFormat(); cout << " oder in Worten: "; duration.printHourText(); duration.printMinuteText(); duration.printSecondText(); return 0; }daytime.h
// daytime.h: interface for the daytime class. // ////////////////////////////////////////////////////////////////////// #pragma once class daytime { private: int hour; int minute; int second; static int NumberOfTimeObjekts; public: daytime(); ~daytime(); void print12hFormat(); void print24hFormat(); void setHMS(int, int, int); void endTime(); int getTimeInSeconds(); void setS(int); // void timeInBit(); void daytime::printHourText(); void daytime::printMinuteText(); void daytime::printSecondText(); };
-
Lass doch mal bei den Minuten- und Sekunden-Angaben die Vor-Umrechnung weg und gib direkt minuteWords[minute] bzw. secondWords[second] aus* - der maximale Index der Arrays ist 59 und wenn du eine Zeit mit 0 Sekunden ausgibst, greifst du auf das (nicht vorhandene) Element 60 zu.
(*) oder noch besser, du nutzt ein globales Array, aus dem alle drei Methoden ihre Stringwerte ziehen - siehe der Beispielcode in meinem vorigen Beitrag.
-
Hallo,
das Programm läuft nun dank deinem Code soweit, nur hinten die Sekunden Ausgabe ist total verquert.
Es kommt ein
0Null0
meine daytime.cpp
// File: daytime.cpp: implementation of the daytime class. // Author: Gunnar Goebel // Date: 06-04-28 // Version 1.0 // Copyright: This File is released under a creative Common Licence. See Link for further Information // Licence Link: http://creativecommons.org/licenses/by-nc-sa/2.0/de/ ////////////////////////////////////////////////////////////////////// #include "daytime.h" #include <iostream> #include <cassert> #include <string> using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// static string numbers[]= {"null", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf", "dreizehn", "vierzehn", "fuenfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzeh", "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "vierundzwanzig", "fuenfundzwanzig", "sechsundzwanzig", "siebenundzwanzig" "achtundzwanzig", "neunundzwanzig", "dreissig", "einunddreissig", "zweiunddreissig", "dreiunddressig", "vierunddreissig", "fuenfunddreissig", "sechsunddreissig", "siebenunddreissig", "achtunddreissig", "neununddreissig", "vierzig", "einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig", "sechsundvierzig", "siebenundvierzig" "achtundvierzig", "neunundvierzig", "fuenfzig", "einundfuenzig", "zweiundfuenzig", "dreiundfuenzig", "vierundfuenzig", "fuenfundfuenzig", "sechsundfuenzig", "siebenundfuenzig" "achtundfuenzig", "neunundfuenzig",}; int daytime::NumberOfTimeObjekts = 0; daytime::daytime() { ++ NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } daytime::~daytime() { -- NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } void daytime::print24hFormat() { cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second; } void daytime::print12hFormat() { cout << (( hour==0 || hour==12 ) ? 12 : hour % 12 ) << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second << ( hour < 12 ? " AM" : " PM" ); } void daytime::setHMS(int HMShour, int HMSminute, int HMSsecond) { // check if hour >=0 and <24 assert(HMShour < 24 && HMShour >= 0); // check if minute >=0 and <60 assert(HMSminute < 60 && HMSminute >= 0); // check if second >=0 and <60 assert(HMSsecond < 60 && HMSsecond >= 0); hour = HMShour; minute = HMSminute; second = HMSsecond; } /*void daytime::endTime() { cout << "Abendessen endet um: "; cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second <<endl; }*/ int daytime::getTimeInSeconds() { int sec; sec = hour*60*60 + minute*60 + second; return sec; } void daytime::setS(int sec) { assert(sec < 86401); hour = sec/3600; sec = sec%3600; minute = sec/60; second = sec%60; } void daytime::printHour12() { int h12 = (( hour==0 || hour==12 ) ? 12 : hour % 12 ); cout << numbers[h12] << " Uhr "; } void daytime::printHour24() { cout << numbers[hour] << " Uhr "; } void daytime::printMinute() { cout << numbers[minute] << (minute==1)?" Minute ":" Minuten "; } void daytime::printSecond() { cout << numbers[second] << (second==1)?" Sekunde ":" Sekunden " ; } int getDurationInSeconds(daytime end, daytime begin) { int durationInSeconds; durationInSeconds = end.getTimeInSeconds() - begin.getTimeInSeconds(); return durationInSeconds; }Desweiterebn bekomme ich keine Leerzeichen bzw zeilenschübe zwischen der ausgabe in Worten und der ausgabe der vorhandenen objekte hin

-
Woher die Ausgabe "0Null0" kommt, bin ich auch überfragt.
Desweiterebn bekomme ich keine Leerzeichen bzw zeilenschübe zwischen der ausgabe in Worten und der ausgabe der vorhandenen objekte hin
Leerzeichen kannst du mit "cout<<' ';" ausgeben, Zeilenwechsel mit "cout<<'\n';" oder "cout<<endl;".
-
HAllo,
ich habs gefunden lag wohl an der Ausgabe Minute bei 1 und Minuten bei allem anderen etc...
nun werden die sekunden aber seltsamerweise net mit der zahl ausgegeben
// File: daytime.cpp: implementation of the daytime class. // Author: Gunnar Goebel // Date: 06-04-28 // Version 1.0 // Copyright: This File is released under a creative Common Licence. See Link for further Information // Licence Link: http://creativecommons.org/licenses/by-nc-sa/2.0/de/ ////////////////////////////////////////////////////////////////////// #include "daytime.h" #include <iostream> #include <cassert> #include <string> using namespace std; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// static string numbers[]= {"null", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf", "dreizehn", "vierzehn", "fuenfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzeh", "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "vierundzwanzig", "fuenfundzwanzig", "sechsundzwanzig", "siebenundzwanzig" "achtundzwanzig", "neunundzwanzig", "dreissig", "einunddreissig", "zweiunddreissig", "dreiunddressig", "vierunddreissig", "fuenfunddreissig", "sechsunddreissig", "siebenunddreissig", "achtunddreissig", "neununddreissig", "vierzig", "einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig", "sechsundvierzig", "siebenundvierzig" "achtundvierzig", "neunundvierzig", "fuenfzig", "einundfuenzig", "zweiundfuenzig", "dreiundfuenzig", "vierundfuenzig", "fuenfundfuenzig", "sechsundfuenzig", "siebenundfuenzig" "achtundfuenzig", "neunundfuenzig",}; int daytime::NumberOfTimeObjekts = 0; daytime::daytime() { ++ NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } daytime::~daytime() { -- NumberOfTimeObjekts; cout << "Vorhandene Objekte: " << NumberOfTimeObjekts <<endl; } void daytime::print24hFormat() { cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second; } void daytime::print12hFormat() { cout << (( hour==0 || hour==12 ) ? 12 : hour % 12 ) << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second << ( hour < 12 ? " AM" : " PM" ); } void daytime::setHMS(int HMShour, int HMSminute, int HMSsecond) { // check if hour >=0 and <24 assert(HMShour < 24 && HMShour >= 0); // check if minute >=0 and <60 assert(HMSminute < 60 && HMSminute >= 0); // check if second >=0 and <60 assert(HMSsecond < 60 && HMSsecond >= 0); hour = HMShour; minute = HMSminute; second = HMSsecond; } /*void daytime::endTime() { cout << "Abendessen endet um: "; cout << ( hour < 10 ? "0" : "" ) << hour << ":" << ( minute < 10 ? "0" : "" ) << minute << ":" << ( second < 10 ? "0" : "" ) << second <<endl; }*/ int daytime::getTimeInSeconds() { int sec; sec = hour*60*60 + minute*60 + second; return sec; } void daytime::setS(int sec) { assert(sec < 86401); hour = sec/3600; sec = sec%3600; minute = sec/60; second = sec%60; } void daytime::printHour12() { int h12 = (( hour==0 || hour==12 ) ? 12 : hour % 12 ); cout << numbers[h12] << " Uhr "; } void daytime::printHour24() { cout << numbers[hour] << " Uhr "; } void daytime::printMinute() { cout << numbers[minute] << " Minute(n) "; //<< (minute==1) ? " Minute ":" Minuten "; } void daytime::printSecond() { cout << numbers[second] << " Sekunde(n) \n"; //<< (second==1) ? " Sekunde ":" Sekunden " ; } int getDurationInSeconds(daytime end, daytime begin) { int durationInSeconds; durationInSeconds = end.getTimeInSeconds() - begin.getTimeInSeconds(); return durationInSeconds; }
-
Hallo Gunnar,
bist ja schon recht weit mit deinem Programm. Die Lehrmethode bei euch kann ich zwar auch nicht ganz nachvollziehn, aber das ist ja hier auch nicht das Thema.
Mir ist bei Deinem String-Array aufgefallen dass du viele Kommata vergessen hast, das verursacht bestimmt eine menge Fehler.Dein Array sollte so hier aussehen, falls du es nicht schon längst geändert hast.
static string numbers[]= {"null", "ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwoelf", "dreizehn", "vierzehn", "fuenfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzeh", "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "vierundzwanzig", "fuenfundzwanzig", "sechsundzwanzig", "siebenundzwanzig", "achtundzwanzig", "neunundzwanzig", "dreissig", "einunddreissig", "zweiunddreissig", "dreiunddressig", "vierunddreissig", "fuenfunddreissig", "sechsunddreissig", "siebenunddreissig", "achtunddreissig", "neununddreissig", "vierzig", "einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig", "sechsundvierzig", "siebenundvierzig", "achtundvierzig", "neunundvierzig", "fuenfzig", "einundfuenzig", "zweiundfuenzig", "dreiundfuenzig", "vierundfuenzig", "fuenfundfuenzig", "sechsundfuenzig", "siebenundfuenzig", "achtundfuenzig", "neunundfuenzig"};Gruß Chris
-
Gunnar_Fh schrieb:
nun werden die sekunden aber seltsamerweise net mit der zahl ausgegeben
Wie meinst du das? Zeigt er das Wort nicht an?
mfg.