Fehlermeldung
-
while(end_loop == true);Als erstes:
Du brauchst der Anweisung nicht zu sagen, das sie "Wahr" sein soll, du kannst also einfach
while(end_loop);schreiben.
So wie die Schleife jetzt aufgebaut ist, würdest du das Programm beenden, wenn du bei der ersten Eingabe keine 1 gemacht hast. Ist das Sinn und Zweck?
Ich würde dasend_loop = falsein die "true" Bedingung setzen, würde zumindest meiner Meinung nach mehr Sinn ergeben

würde dann in etwa so aussehen:
#include <iostream> #include <cstring> using namespace std; int main() { char* carray[30]; int eingabe; bool end_loop = true; do { cout << "Druecken sie '1' fuer ein neues Spiel!" << endl; cout << "Druecken sie '2' um das Programm zu beenden!" << endl; cin >> eingabe; if(eingabe == 1) { cout << "Geben sie ein Wort ein! (Bitte nur Grossbuchstaben): "; cin.getline(carray, sizeof(carray)); for(signed int i = 0; i < strlen(carray); i++) { cout << "-"; } end_loop = false; } } while(end_loop); cout << "Programm wird beendet..." << endl; return 0; }
-
Und mit
std::stringwäre der Code dann sogar schön und sicher.
-
Nur mein Problem bleibt.
Ich komme nicht zur eingabe des Wortes.
-
Honky schrieb:
Nur mein Problem bleibt.
Ich komme nicht zur eingabe des Wortes.Und ich kann's nnoch nicht einmal compilieren. Denn es ist einfach totaler Mist und das müsste dir dein Compiler auch sagen:
char* carray[30];Das ist ein Array von char*. Das ist kein C-String! Entsprechend gehen auch alle späteren Stringoperationen schief:
test.cc: In function ‘int main()’: test.cc:22: [b]error: no matching function for call to ‘std::basic_istream<char, std::char_traits<char> >::getline(char* [30], long unsigned int)’[/b] /usr/include/c++/4.4/istream:593: note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(_CharT*, std::streamsize, _CharT) [with _CharT = char, _Traits = std::char_traits<char>] /usr/include/c++/4.4/istream:405: note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(_CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>] test.cc:24: [b]error: cannot convert ‘char**’ to ‘const char*’ for argument ‘1’ to ‘size_t strlen(const char*)’ [/b]Das alles würdest du dir sparen, wenn du endlich std::string benutzen würdest. Das ist irgendwie als wenn du zum Arzt gehst und jammerst, dass dein Kopf weh tut, wenn du vor die Wand läufst. Da kann man eben nur antworten, dass du aufhören sollst absichtlich vor die Wand zu laufen.
edit: So ungefähr wolltest du es wohl haben. Man könnte das ganze natürlich noch besser machen, indem man auf Fehleingaben reagiert, aber wir wollen für den Anfang mal nicht übertreiben:
#include <iostream> #include <string> using namespace std; int main() { int eingabe; do { cout << "Druecken sie '1' fuer ein neues Spiel!" << endl; cout << "Druecken sie '2' um das Programm zu beenden!" << endl; cin >> eingabe; if(eingabe == 1) { cout << "Geben sie ein Wort ein! (Bitte nur Grossbuchstaben): "; string str; cin >> str; // So leicht kann das sein. for(unsigned int i = 0; i < str.size(); i++) // Warum signed, wenn i doch ganz klar nur positiv sein kann? { cout << "-"; } cout<<endl; // Neue Zeile nach den ----, das sieht hübscher aus. } } while(eingabe!=2); // Wozu das Gefrickel mit end_loop? cout << "Programm wird beendet..." << endl; return 0; }
-
Das mit dem char-Zeiger war ein versehen, hab ich in meinem eigenen code auch nicht rein machen wollen.
Und das mit dem end_loop wurde mir von anderen vorgeschlagen. Zuvor hatte ich auch die abfrage mit
while(eingabe !=2);Und zu den C-Strings: Wenn es wirklich so schlimm ist, dass ich C-Strings benutze, dann lass ich es eben bleiben. Ich dachte nur es müsste auch mit diesen gehen.
Trotzdem danke
PS: Was benutzt du denn für ne IDE
-
Honky schrieb:
Und zu den C-Strings: Wenn es wirklich so schlimm ist, dass ich C-Strings benutze, dann lass ich es eben bleiben. Ich dachte nur es müsste auch mit diesen gehen.
Klar geht es, aber es ist einiges umständlicher, als mit
std::string.
-
Honky schrieb:
Und zu den C-Strings: Wenn es wirklich so schlimm ist, dass ich C-Strings benutze, dann lass ich es eben bleiben. Ich dachte nur es müsste auch mit diesen gehen.
Geht auch, ist aber schwieriger. Warum sich das Leben absichtlich schwer machen?
PS: Was benutzt du denn für ne IDE
Emacs, warum?
-
Nur so, bin interessiert was sonst noch so gängig ist!