Eine Frage....eine Anfängerfrage.....
-
Follgender Code funktioniert nicht. Warum ??!!
#include <iostream.h> #include <stdlib.h> int main() { bool abfrage; char eingabe, text[1000]; cout << "Hallo !" << endl << "Dieses Programm ermoeglicht eine Texteingabe und anschliesend eine wiedergabe.\n"; abfrage = true; cout << "\nIst ihr Text ein Einzeilentext oder ist er laenger als eine Zeile ?\n([k]urz / [l]ang) : "; cin >> eingabe; cin.ignore(cin.rdbuf()->in_avail());//Inputstream löschen snst übergeht er das nächste cin if ( eingabe == 'k' || eingabe == 'K' ) { cout << "\nBitte geben Sie den Text ein :\n\n"; cin >> text; } else if ( eingabe == 'l' || eingabe == 'L' ) { cout << "\nBitte geben Sie den Text ein :\n\n"; cin.getline(text, 1000, '\n'); } else { cout << "Falsche Eingabe !\n"; abfrage = false; } if ( abfrage == true ) { cout << "Der eingegebener Text lautet : " << text << endl; } system ("PAUSE");//Wird auch nicht so gern gesehen return 0;//nicht vergessen ! }
Und was hier pasiert würde ich auch gerne wissen :
cin.ignore(cin.rdbuf()->in_avail());
Und in der Zeile nummer 17, da wo else if ( eingabe == 'l' || eingabe == 'L' ) steht, pasier vollgendes wen ich 'else' weg mache: Wenn ich 'L' eingebe kann ich sowieso nichts reinschreiben aber das Programm endet wie es soll. Wiederum wenn ich 'K' eingebe kann ich den Text eingeben aber am ende kommt die "Falsche Eingabe" Fehlermeldung aus ! Ich meine ich hab das Programm schon verkleinert aber es steckt irgendw der Wurm. Es kann doch nicht so schwer sein ein kleines Texteingabeprogramm zu schreiben. Warum funktioniert vollgendes :#include <iostream.h> #include <stdlib.h> void main(void) { char text[100]; cout << "Hallo !" << endl << "Dieses Programm ermoeglicht eine Texteingabe und anschliesend eine wiedergabe.\n"; cout << "Hier koennen Sie auch das Leerzeichen verwenden."; cout << "\nBitte geben Sie den Text ein :\n\n"; cin.getline( text, 100, '\n' ); cout << "\nDer eingegebener Text lautet : " << text << endl << endl; system ("PAUSE"); return 0; }
Ja, und was ist mit system("PAUSE") ? Ich muss es doch benutzen sonst schließt der Compiler mir das Fenster gleich zu und ich kann nicht sehen was er da eingentlich gemacht hat. Und return 0 kommt doch nur bei Funktionen vor, hier hat es doch keine bedeutung, oder doch ? Warte auf eure Hilfe. Danke im Voraus und danke auch an Nothelfer für die guten( besser interesante) Vorschlege.
-
Piotrek schrieb:
Ja, und was ist mit system("PAUSE") ?
Also statt system("PAUSE") könntest du auch einfach sowas schreiben
char a = 0; cin>>a;
somit hättest du das Programm auch angehalten. system() ist eine unschöne variante und glaub ich, auch noch plattformabhängig
Piotrek schrieb:
Und return 0 kommt doch nur bei Funktionen vor, hier hat es doch keine bedeutung, oder doch ?
Nein kommt es nicht. normalerweise sollte dein Hauptprogramm so aussehn
//hier wird ein Integer als Rückgabetyp verlangt und daher auch das "return 0" //int argc gibt die anzahl der Argumente wieder die sich in //char* argv[] befinden int main(int argc, char* argv[]) { return 0; }
Hoffe das hilft dir weiter
-
Das Return 0 muss aber nicht sein, laut Standard wird Return 0 angenommen,
wenn kein Rückgabewert angegeben ist.
-
Du meinst daß mit: void main(void) sich retutn0 erübrigen würde ?
Nochmals danke für eure Anregungen. Echt, ohne euch wäre ich verloren.....Also weiter posten. THX ! Aber kann mir jemand erklären warum mein Code nicht funzt ? Nochmal zu erinerung :#include <iostream.h> #include <stdlib.h> int main() { int abfrage_1 = 0; char eingabe_1[1], eingabe_2[1], text[1000]; cout << "Hallo !" << endl << "Dieses Programm ermoeglicht eine Texteingabe und anschliesend eine wiedergabe.\n"; //do // { cout << "\nIst ihr Text ein Einzeilentext oder ist er laenger als eine Zeile ?\n([k]urz / [l]ang) : "; cin >> eingabe_1[1]; // Mit cin >> eingabe_1; geht's nicht !?!? if ( eingabe_1[1] == 'k' || eingabe_1[1] == 'K' ) { cout << "\nBitte geben Sie den Text ein :\n\n"; cin >> text[1]; abfrage_1 = 1; } if ( eingabe_1[1] == 'l' || eingabe_1[1] == 'L' ) { cout << "\nBitte geben Sie den Text ein :\n\n"; cin.getline(text, 1000, '\n'); abfrage_1 = 1; } if ( abfrage_1 == 0 ) { cout << "Falsche Eingabe !\n"; } // } //while ( abfrage_1 != 1 ); cout << "Der Text wurde gespeichetr. Moechen Sie den Text anzeigen lassen ? (j/n) : "; cin >> eingabe_2; if ( eingabe_2[1] == 'j' || eingabe_2[1] == 'J' ) { cout << "Der eingegebene Text lautet : \n"<< text[1000]; } system ("PAUSE"); }
-
ohne return 0; gibt der MSVC++ (Vers. 6) keine 0 an das OS zurück, kann man via Debugger überprüfen. Daher sollte diese Zeile sein.
-
Aja, verstehe ich. Ich benutze Borlands C++ und komme ohne return o; gut aus.
Danke !
-
Immer schön portabel bleiben, und bitte keine Vorurteile.
-
#include <iostream.h> #include <stdlib.h> int main() { int abfrage_1 = 0; char eingabe_1[1], eingabe_2[1], text[1000];//eingabe_1 und 2 sind ein Array der Grösse von 1 Feld cout << "Hallo !" << endl << "Dieses Programm ermoeglicht eine Texteingabe und anschliesend eine wiedergabe.\n"; //do // { cout << "\nIst ihr Text ein Einzeilentext oder ist er laenger als eine Zeile ?\n([k]urz / [l]ang) : "; //eingabe_1[1] hasst du nicht deklariert es gibt nur eingabe_1[0] cin >> eingabe_1[1]; // Mit cin >> eingabe_1; geht's nicht weil eingabe_1 ein Zeiger auf eingabe[0] ist. //Deine nächsten ifs müssten sich dann auf eingabe_1[0] beziehen. if ( eingabe_1[1] == 'k' || eingabe_1[1] == 'K' ) { cout << "\nBitte geben Sie den Text ein :\n\n"; cin >> text[1]; abfrage_1 = 1; } if ( eingabe_1[1] == 'l' || eingabe_1[1] == 'L' ) { cout << "\nBitte geben Sie den Text ein :\n\n"; cin.getline(text, 1000, '\n'); abfrage_1 = 1; } if ( abfrage_1 == 0 ) { cout << "Falsche Eingabe !\n"; } // } //while ( abfrage_1 != 1 ); cout << "Der Text wurde gespeichetr. Moechen Sie den Text anzeigen lassen ? (j/n) : "; //Das nächste cin wird "übergangen".Der Eingabepuffer ist nicht leer(durch deinen anderen cin) //cin.ignore(cin.rdbuf()->in_avail()) löscht den Eingabepuffermüll; cin >> eingabe_2;//Das ist ein Zeiger auf das Char Array eingabe_2[0] cout << eingabe_2; if ( eingabe_2[1] == 'j' || eingabe_2[1] == 'J' ) { cout << "Der eingegebene Text lautet : \n"<< text[1000]; } system ("PAUSE");//Ist Plattformabhängig //wenn dir das egal ist und du sowieso nur den Borland nimmst kannst du auch getch() nehmen. }
-
Danke Nothelfer, aber ich glaube ich müsste mich noch bissle mit einem c++ Buch beschäftigen....... Trotzdem Danke ! Cu.
-
Piotrek schrieb:
vollgendes
OH MEIN GOTT!!! DIE WELT IST KRANK!!!
wie kann man ein wort nur SO FALSCH schreiben???
-
Piotrek schrieb:
vollgendes
OH MEIN GOTT!!! DIE WELT IST KRANK!!!
wie kann man ein wort nur SO FALSCH schreiben???
-
Oh mein Gott, wie kann man nur zweimal hintereinander posten ?
-