C++/Kleiner Taschenrechner in der Konsole

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

  • achsoooo
    d.H so hoch wie die zahl ist, so oft fragt er dann nach?
    "bitte geben sie die zahl ein"
    1+2
    "bitte geben sie die zahl ein"
    1+3
    "bitte geben sie die zahl ein"
    12+1
    "bitte geben sie die zahl ein"
    12+1
    "bitte geben sie die zahl ein"
    6+6

    schluß?

    d.H z.B nachdem 5 mal würde er nicht erneut fragen?

    Edit:
    JETZT habe ich es verstanden..danke :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Pl0x ()

  • Checkmateing schrieb:

    Das simpelste was man ohne Funktionen machen kann:

    Quellcode

    1. #include <iostream> //iostream einbinden
    2. #include <Windows.h> //Windows.h einbinden
    3. using namespace std;
    4. int main() //Hauptthread
    5. {
    6. int auswahl=0; //Auswahl
    7. float zahl1=0.f; //zahl1 einer Aufgabe /* Ob 0.f oder
    8. float zahl2=0.0f; //zahl2 einer Aufgabe 0.0f ist egal */
    9. bool schleife=true; //Schleife noch am laufen oder nicht?
    10. while(schleife) //Schleife
    11. {
    12. system("cls"); //Bildschirm leeren
    13. cout << " Rechner" << endl;
    14. cout << "1 - Addition" << endl;
    15. cout << "2 - Subtraktion" << endl;
    16. cout << "3 - Multiplikation" << endl;
    17. cout << "4 - Division" << endl;
    18. cout << "5 - Beenden" << endl;
    19. cout << "Auswahl: ";
    20. cin >> auswahl; //Auswahl eingeben
    21. switch(auswahl) //Fokus auf Auswahl
    22. {
    23. case(1): //Wenn Auswahl == 1 dann
    24. {
    25. cout << endl << "Summand 1: ";
    26. cin >> zahl1; //Summand 1 eingeben
    27. cout << endl << "Summand 2: ";
    28. cin >> zahl2; //Summand 2 eingeben
    29. cout << endl << "Aufgabe: " << zahl1 << "+" << zahl2 << "=" << (zahl1+zahl2) << endl; // Aufgabe und dann Ergebnis ausgeben
    30. zahl1=0; //Beide Zahlen
    31. zahl2=0; //zuruecksetzen
    32. Sleep(1500); //Pausieren fuer 1,5sek
    33. }break;
    34. case(2): //Wenn Auswahl == 2 dann
    35. {
    36. cout << endl << "Minuend: ";
    37. cin >> zahl1; //Minuend eingeben
    38. cout << endl << "Subtrahend: ";
    39. cin >> zahl2; //Subtrahend eingeben
    40. cout << endl << "Aufgabe: " << zahl1 << "-" << zahl2 << "=" << (zahl1-zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
    41. zahl1=0; //Beide Zahlen
    42. zahl2=0; //zuruecksetzen
    43. Sleep(1500); //Pausieren fuer 1,5sek
    44. }break;
    45. case(3): //Wenn Auswahl == 3 dann
    46. {
    47. cout << endl << "Faktor 1: ";
    48. cin >> zahl1; //Faktor 1 eingeben
    49. cout << endl << "Faktor 2: ";
    50. cin >> zahl2; //Faktor 2 eingeben
    51. cout << endl << "Aufgabe: " << zahl1 << "*" << zahl2 << "=" << (zahl1*zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
    52. zahl1=0; //Beide Zahlen
    53. zahl2=0; //zuruecksetzen
    54. Sleep(1500); //Programm fuer 1,5sek einfrieren
    55. }break;
    56. case(4): //Wenn Auswahl == 5 dann
    57. {
    58. cout << endl << "Dividend: ";
    59. cin >> zahl1; //Dividend eingeben
    60. cout << endl << "Divisor: ";
    61. cin >> zahl2; //Divisor eingeben
    62. cout << endl << "Aufgabe: " << zahl1 << ":" << zahl2 << "=" << (zahl1/zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
    63. zahl1=0; //Beide Zahlen
    64. zahl2=0; //zuruecksetzen
    65. Sleep(1500); //Pausieren fuer 1,5sek
    66. }break;
    67. case(5): //Wenn Auswahl == 5 dann
    68. {
    69. schleife=false; //Aus Schleife raus gehen
    70. }break;
    71. default: //Wenn Auswahl == Irgendwas Anderes dann
    72. {
    73. cout << "FALSCHE EINGABE" << endl; //Fehlermeldung
    74. }
    75. }
    76. }
    77. return (0); //0 als Rueckgabewert senden um Programm zu schließen
    78. }
    Alles anzeigen




    Wie könnte man das Problem bei diesem Code lösen, dass wenn man beispielsweise bei der Menüauswahl anstatt Zahlen, Buchstaben eingibt -> Programm stürzt ab?

    Genau gleich ist es dann bei den Cases. Wenn man dort anstatt ne Zahl nen Buchstaben eingibt, schmiert das Progi ab?

    Hat mir bitte jemand ein Tip, wie er dies lösen würde.

    Danke und Gruss

    Wuzz
  • Bitte entschuldige meine ungenaue Beschreibung. Also bei der Menüauswahl habe ich das nun so gelöst:

    Quellcode

    1. #include <iostream> //iostream einbinden
    2. using namespace std;
    3. int main() //Hauptteil
    4. {
    5. char eingabe[1024]; //Definition für Char(im Menü)
    6. int auswahl; //Definition für Integer
    7. double zahl1; //erste Zahl der Aufgabe
    8. double zahl2; //zweite Zahl der Aufgabe
    9. bool schleife=true; //läuft die Schleife noch oder nicht mehr?
    10. while(schleife) //Schleife
    11. {
    12. cout << "------------Rechner-----------\n" << endl; //Titel "Rechner"
    13. cout << "Bitte Auswahl eingeben: 1-5!\n" << endl; //Benutzer wird aufgefordert seine Auswahl zu treffen
    14. cout << "------------------------------" << endl; //optische Abgrenzung
    15. cout << "1 - Addition" << endl; //Menüauswahl 1
    16. cout << "2 - Subtraktion" << endl; //Menüauswahl 2
    17. cout << "3 - Multiplikation" << endl; //Menüauswahl 3
    18. cout << "4 - Division" << endl; //Menüauswahl 4
    19. cout << "5 - Beenden" << endl; //Menüauswahl 5
    20. cout << "------------------------------\n" << endl; //optische Abgrenzung
    21. cout << "Auswahl: "; //Bestätigung der Auswahl
    22. cin >> eingabe; //Auswahl eingeben
    23. auswahl = atoi(eingabe); //Umwandlung von Char zu Int
    24. switch(auswahl) //Bestimmung der Auswahl (case 1-5)
    25. {
    26. case(1): //Wenn Auswahl == 1 dann
    27. {
    28. cout << endl << "Summand 1: ";
    29. cin >> zahl1; //Summand 1 eingeben
    30. cout << endl << "Summand 2: ";
    31. cin >> zahl2; //Summand 2 eingeben
    32. cout << endl << "Resultat: \n" << zahl1 << "+" << zahl2 << "=" << (zahl1+zahl2) << endl; // Aufgabe und dann Ergebnis ausgeben
    33. }break;
    34. case(2): //Wenn Auswahl == 2 dann
    35. {
    36. cout << endl << "Minuend: ";
    37. cin >> zahl1; //Minuend eingeben
    38. cout << endl << "Subtrahend: ";
    39. cin >> zahl2; //Subtrahend eingeben
    40. cout << endl << "Resultat: \n" << zahl1 << "-" << zahl2 << "=" << (zahl1-zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
    41. }break;
    42. case(3): //Wenn Auswahl == 3 dann
    43. {
    44. cout << endl << "Faktor 1: ";
    45. cin >> zahl1; //Faktor 1 eingeben
    46. cout << endl << "Faktor 2: ";
    47. cin >> zahl2; //Faktor 2 eingeben
    48. cout << endl << "Resultat: \n" << zahl1 << "*" << zahl2 << "=" << (zahl1*zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
    49. }break;
    50. case(4): //Wenn Auswahl == 4 dann
    51. {
    52. cout << endl << "Dividend: ";
    53. cin >> zahl1; //Dividend eingeben
    54. cout << endl << "Divisor: ";
    55. cin >> zahl2; //Divisor eingeben
    56. if (zahl2 == 0) // Fehler, falls durch 0 dividiert wird!
    57. {
    58. cout << "Division durch 0 ist nicht erlaubt!\n" << endl; // Benutzer wird darauf hingewiesen, dass er nicht durch Null dividieren kann
    59. }
    60. else
    61. {
    62. cout << endl << "Resultat: \n" << zahl1 << ":" << zahl2 << "=" << (zahl1/zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
    63. }
    64. }break;
    65. case(5): //Wenn Auswahl == 5 dann
    66. {
    67. schleife=false; //Aus Schleife raus gehen
    68. }break;
    69. default: //Wenn Auswahl == Irgendwas Anderes dann
    70. {
    71. cout << "Eingabe NICHT korrekt!" << endl; //Fehlermeldung
    72. }
    73. }
    74. }
    75. return (0); //0 als Rueckgabewert senden um Programm zu schließen
    76. }
    Alles anzeigen



    Wenn nun jemand auf die Idee kommt, bei der Menüauswahl irgend etwas anderes als die gewünschten Menüpunkte, auszuwählen, dann erhält der Anwender eine Fehlermeldung und auch das Programm stürzt nicht mehr ab.

    Wie mache ich dies aber nun, damit bei den Cases 1-5 auch ein Fehler an den Anwender ausgegeben wird, wenn er beispielsweise nen char eingibt(momentan stürzt das Programm einfach ab)?

    Danke und Gruss