Der MegaNoob braucht Hilfe!!!

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Der MegaNoob braucht Hilfe!!!

      Hallo @ all.
      Ich habe vor wenigen Tagen angefangen mich mit C++ zu beschäftigen und bin noch nicht zu mehr fähig als ein ,,Hallo Welt,, Programm zu erstellen:Psmiley:. Also wie mein Nick schon sagt..Der Mega Noob!!!
      Ich habe mich jetzt ein wenig mit strings beschäftigt und konnte auch schon ein bisschen was damit anfangen.
      Jetzt aber zu meiner Frage.
      Ich möchte für einen Bekannten so ein kleines Spassprogramm erstellen.
      Es hat die Aufgabe den Empfanger zu begrüssen und ihn nach seinem Namen zu fragen (bis hier hin kein Problem). Aber wie muss ich die codes schreiben damit bei einer Frage/Antwort die Auswahl zwischen Ja und Nein Varieren kann.
      Also ein Beispiel:

      #include <cstdlib>
      #include <iostream>

      using namespace std;

      int main(int argc, char *argv[])
      {
      string name, ja, nein;

      cout <<"Hallo." << endl;
      cout <<"Wie heissen Sie?" << endl;
      cin >> name;
      cout <<"Hallo " << name << endl;

      So jetzt möchte ich eine Frage mit Auswahlmöglichkeit schreiben z.b.

      cout <<"Sind Sie verheiratet? " << endl;

      Wie muss ich jetzt fortfahren?
      Ich habe es so versucht:

      cin >> ja;
      cout << ja << "Ok, und wie lange schon?" << endl;
      cin>> nein;
      cout << nein << "Ok, haben Sie noch vor zu heiraten?" << endl;

      das hat aber nicht so ganz funktioniert :yaeh am not durnk:.
      Ich denke Ihr wisst was ich meine.

      Ich habe die Anwendung in Dev-C++ erstellt.

      Danke im voraus für eure Hilfe.
      Bitte Antwortet möglichst einfach (Meganoob sitzt an der Maschiene hahah).

      Gruss
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Quellcode

      1. int main(int argc, char **argv)
      2. {
      3. Strint sName;
      4. cout <<"Hallo." << endl;
      5. cout <<"Wie heissen Sie?" << endl;
      6. cin >> sName;
      7. cout <<"Hallo " << sName << endl;
      8. for( int i = 1; i < argc; i++ )
      9. {
      10. switch( argv[i][1] )
      11. {
      12. case 'ja':
      13. cout << "Ok, und wie lange schon?" << endl;
      14. break;
      15. case 'nein':
      16. cout << "Ok, haben Sie noch vor zu heiraten?" << endl;
      17. break;
      18. default:
      19. cout << "Ja oder Nein?" << endl;
      20. break;
      21. }
      22. }
      23. }
      Alles anzeigen


      Hf damit.
    • Crasy;279296 schrieb:

      Quellcode

      1. int main(int argc, char **argv)
      2. {
      3. Strint sName;
      4. cout <<"Hallo." << endl;
      5. cout <<"Wie heissen Sie?" << endl;
      6. cin >> sName;
      7. cout <<"Hallo " << sName << endl;
      8. for( int i = 1; i < argc; i++ )
      9. {
      10. switch( argv[i][1] )
      11. {
      12. case 'ja':
      13. cout << "Ok, und wie lange schon?" << endl;
      14. break;
      15. case 'nein':
      16. cout << "Ok, haben Sie noch vor zu heiraten?" << endl;
      17. break;
      18. default:
      19. cout << "Ja oder Nein?" << endl;
      20. break;
      21. }
      22. }
      23. }
      Alles anzeigen


      Hf damit.

      Das ist totaler Stuss.

      1. Er lernt nichts, wenn du ihm fertige Lösungen vor die Nase setzt (dazu auch noch ohne Kommentare).
      2. Wieso übergibst du die Antwort als Parameter? Er wollte die Frage ausgeben, die Antwort einlesen und dann entscheiden, wie er darauf reagiert. (In deinem Quelltext taucht die Frage erst gar nicht auf)
      3. Mit einfachen Hochkommas kann man Zeichen einbetten, also 'd', 'e', '1' usw. Für Strings sind Anführungszeichen da, "ja" bzw. "nein". 'ja' und 'nein' sind daher auch Stuss, würde mich wundern wenn da nicht schon der Compiler meckern würde. Zudem vergleichst du mit argv[1] nur das erste Zeichen vom jeweiligen Parameter.
      4. Wenn du den kompletten String vergleichen möchtest kannst du das - zumindest wenn es, wie hier, ein "C"-String ist (also ein char-Array) - mit keiner switch-case Anweisung. Da würden nur die Adressen der Speicherstellen verglichen werden (oder der Compiler spuckt nen Fehler aus). Du müsstest dafür schon strcmp() nutzen oder daraus einen "C++"-String (also ein Objekt der Klasse string) machen (die überläd den == Operator ja, ich weiß aber nicht, ob man dann Strings mit switch-case verlgeichen kann).

      Deine Antwort bietet also keinen Lehrneffekt, ist keine Lösung für sein Problem, ist von der Logik her falsch und würde sich vermutlich nicht mal compilen lassen.
    • Ich muss Well recht geben und sagen, dass der Code wirklich nicht funktioniert.
      Abgesehn davon, dass ein String:
      string name;
      und nicht Strint name;
      deklariert wird, funktioniert die Schleife nicht.

      Hier der Code:

      C-Quellcode

      1. #include <iostream>
      2. #include <string>
      3. using namespace std;
      4. int main(){
      5. //Deklaration der Variablen
      6. int iFrage;
      7. string sName;
      8. //Ausgabe
      9. cout << "Hallo" << endl
      10. << "Wie heissen Sie?" << endl;
      11. //Eingabe in sName speichern
      12. cin >> sName;
      13. cout << "Hallo " << sName << endl;
      14. //Eingabe mit 1 und 2 als Optionen(Unkomplizierte weitere Verarbeitung mit Integern)
      15. cout << "Sind Sie verheiratet?" << endl
      16. << "1: JA - 2: Nein" << endl;
      17. //Eingabe wird in iFrage gespeichert
      18. cin >> iFrage;
      19. //Hier wird geprüft ob iFrage gleich 1 ist.Wenn nicht wird ind en else teil gegangen und gefragt ob iFrage //gleich 2 ist.Sollte beides nicht zutreffen liegt ein Fehler vor.
      20. //Fehlermöglichkeiten: 1. falsche Zahlen,also nicht 1 oder 2. Oder Fehlermöglichkeit2: Eingabe eines Strings(Textes)
      21. if(iFrage == 1){
      22. cout << "Ok, und wie lange schon?";
      23. }else{
      24. if(iFrage == 2){
      25. cout << "Ok, haben Sie noch vor zu heiraten?";
      26. }else{
      27. //Fehlermeldung bei falscher EIngabe
      28. cout << "Fehler!";
      29. }
      30. }
      31. return 0;
      32. }
      Alles anzeigen

      Ansonsten mit String vergleich:

      C-Quellcode

      1. #include <iostream>
      2. #include <string>
      3. using namespace std;
      4. int main(){
      5. //Deklaration der Variablen
      6. string sFrage;
      7. string sName;
      8. //Ausgabe
      9. cout << "Hallo" << endl
      10. << "Wie heissen Sie?" << endl;
      11. //Eingabe in sName speichern
      12. cin >> sName;
      13. cout << "Hallo " << sName << endl;
      14. cout << "Sind Sie verheiratet?" << endl;
      15. //Eingabe wird in iFrage gespeichert
      16. cin >> sFrage;
      17. if(sFrage == "ja" || sFrage == "Ja"){
      18. cout << "Ok, und wie lange schon?";
      19. }else{
      20. if(sFrage == "nein" || sFrage == "Nein"){
      21. cout << "Ok, haben Sie noch vor zu heiraten?";
      22. }else{
      23. cout << "Fehler!";
      24. }
      25. }
      26. return 0;
      27. }
      Alles anzeigen
    • Wow..Besten Dank für die ganzen Antworten und die Codes.:cool:
      Jetzt versuche ich die mal genau zu studieren um sie auch richtig zu verstehen.
      Ich möchte ja schliesslich nicht meine copy/paste fähigkeiten trainieren. ;-)
      Danke nochmal für die Hilfe ich würde sie für evtl. folgende Fragen gerne wieder in Anspruch nehmen.

      Grüsse DerMegaNoob (auf dem Weg zum Noob)
    • j4cky;281764 schrieb:

      Bei einem guten C++ Stil sollte man die Klammern nicht in die gleich Zeile wie beispielsweise if setzen.
      Stattdessen:

      Quellcode

      1. if(<Bedingung>)
      2. {
      3. //Code
      4. }

      Ich widerspreche. Nenn mal deine Argumente, dann können wir darüber diskutieren.