Mein erstes Programm (Taschenrechner)...

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

  • Mein erstes Programm (Taschenrechner)...

    Huhu
    Bin neu hier und hoffe das ich hier richtig bin...
    Ich bin seit 3 Tage dabei, C++ zu lernen.... _naja_ ... Und ich habe auch schon was "programmiert", nämlich einen Taschenrechner... das übliche Anfängerprogramm...
    Ich würde gerne eure Meinung wissen, da ich glaube das ich warscheinlich total "unsauber" gearbeitet habe und mir das viel zu kompliziert gemacht habe... bzw. Anfängerfehler gemacht habe, die einfach nicht sein müssen :)
    Das Teil hat mich 3-4 Stunden gekostet, hat aber sehr viel spaß gemacht und ich bin motiviert weiter zu lernen :)
    Ich benutze größtenteils das Tutorial hier : cplusplus.com/doc/tutorial/
    Das ist leider auf Englisch, soll aber wohl sehr gut sein. Ich verstehe auch alles mehr oder weniger... (wollte mir später aber noch ein Buch kaufen... um genauer darauf einzugehen)...

    Das Programm funktioniert bestens... nur zwei Fehler hat es noch und ich weiß nicht wie ich diese behebe...
    1.) z.B Zeile 59... Bei der Abfrage ob eine neue Rechnung erfolgen soll, muss der Benutzer zwingend klein schreiben... leider weiß ich nicht wie man das ändert...
    2.) ... wenn der Benutzer z.B. x oder y eingeben soll (sprich eine Zahl) und man anstatt einer Zahl einen Buchstaben eingibt... dann kommt ein Ergebnis, das aber die ganze Zeit erscheint... also das man nicht mehr lesen kann was angezeigt wird da sich das unendlich lang wiederholt ... mhmpf...

    Also nochmal im Klartext : Was haltet ihr von dem Programm...? Irgendwelche Ratschläge, Tipps oder so? Wäre euch sehr dankbar...

    Gruß Necron9


    Quellcode

    1. #include <string>
    2. #include <iostream>
    3. using namespace std;
    4. int main ()
    5. {
    6. double ergebnis;
    7. double x;
    8. double y;
    9. double zeichen;
    10. string antwortja = "ja";
    11. Start:
    12. cout << "\n\n";
    13. cout << "****************************\n";
    14. cout << "****** Taschenrechner ******\n";
    15. cout << "****************************\n\n\n";
    16. //Eingabe von Rechenart
    17. cout << "Druecken Sie [ ] und Enter...\n";
    18. cout << "(1) fuer Addition\n";
    19. cout << "(2) fuer Subtraktion\n";
    20. cout << "(3) fuer Multiplikation\n";
    21. cout << "(4) fuer Division\n\n";
    22. rechenart:
    23. cout << "\n\n";
    24. cout << "Geben Sie ihre Rechenart an: ";
    25. cin >> zeichen;
    26. cout << "\n";
    27. //Eingabe der Rechenart
    28. if (zeichen > 4)
    29. {
    30. cout << "Sie muessen 1,2,3 oder 4 eingeben!";
    31. goto rechenart;
    32. }
    33. //Rechenart 1
    34. if (zeichen == 1)
    35. {
    36. cout << "Geben sie x an: ";
    37. cin >> x;
    38. cout << "Geben sie y an: ";
    39. cin >> y;
    40. ergebnis=x+y;
    41. cout << "------------------\n";
    42. cout << "Das Ergebnis lautet: " << ergebnis;
    43. cout << "\n\n\n\n\n\n";
    44. cout << "Neue Rechnung? ";
    45. cin >> antwortja;
    46. if (antwortja == "ja")
    47. {
    48. goto Start;
    49. }
    50. }
    51. //Rechenart 2
    52. if (zeichen == 2)
    53. {
    54. cout << "Geben sie x an: ";
    55. cin >> x;
    56. cout << "Geben sie y an: ";
    57. cin >> y;
    58. ergebnis=x-y;
    59. cout << "------------------\n";
    60. cout << "Das Ergebnis lautet: " << ergebnis;
    61. cout << "\n\n\n\n\n\n";
    62. cout << "Neue Rechnung? ";
    63. cin >> antwortja;
    64. if (antwortja == "ja")
    65. {
    66. goto Start;
    67. }
    68. }
    69. //Rechenart 3
    70. if (zeichen == 3)
    71. {
    72. cout << "Geben sie x an: ";
    73. cin >> x;
    74. cout << "Geben sie y an: ";
    75. cin >> y;
    76. ergebnis=x*y;
    77. cout << "------------------\n";
    78. cout << "Das Ergebnis lautet: " << ergebnis;
    79. cout << "\n\n\n\n\n\n";
    80. cout << "Neue Rechnung? ";
    81. cin >> antwortja;
    82. if (antwortja == "ja")
    83. {
    84. goto Start;
    85. }
    86. }
    87. //Rechenart 4
    88. if (zeichen == 4)
    89. {
    90. cout << "Geben sie x an: ";
    91. cin >> x;
    92. cout << "Geben sie y an: ";
    93. cin >> y;
    94. ergebnis=x/y;
    95. cout << "------------------\n";
    96. cout << "Das Ergebnis lautet: " << ergebnis;
    97. cout << "\n\n\n\n\n\n";
    98. cout << "Neue Rechnung? ";
    99. cin >> antwortja;
    100. if (antwortja == "ja")
    101. {
    102. goto Start;
    103. }
    104. }
    105. }
    Alles anzeigen
  • Hallo und Willkommen im Forum,

    Dein Quellcode ist an sich ganz in Ordnung. Nur eine Fatale Sache ist da drinn, die solltest du dir schleunigst abgewöhnen.

    Quellcode

    1. goto Start;


    Sowas macht man nicht, die goto zeiten sind vorbei :)

    Du sagtest ja, das du noch Anfänger bist, also mache dir mal keine Sorgen um die Optik, das kann mit etwas übung von ganz alleine. Du wirst deinen eigenen Style finden müssen. Eigne dir erst mal mehrere Techniken an, dann wirst du automatisch dahinter kommen wie man sachen anders lösen kann.
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Ein weiter Vorschlag ist Redundanzen vermeiden - sieht dann etwa so aus:

    Quellcode

    1. #include <string>
    2. #include <iostream>
    3. using namespace std;
    4. int main ()
    5. {
    6. double ergebnis;
    7. double x;
    8. double y;
    9. double zeichen;
    10. string antwortja = "ja";
    11. Start:
    12. cout << "\n\n";
    13. cout << "****************************\n";
    14. cout << "****** Taschenrechner ******\n";
    15. cout << "****************************\n\n\n";
    16. //Eingabe von Rechenart
    17. cout << "Druecken Sie [ ] und Enter...\n";
    18. cout << "(1) fuer Addition\n";
    19. cout << "(2) fuer Subtraktion\n";
    20. cout << "(3) fuer Multiplikation\n";
    21. cout << "(4) fuer Division\n\n";
    22. rechenart:
    23. cout << "\n\n";
    24. cout << "Geben Sie ihre Rechenart an: ";
    25. cin >> zeichen;
    26. cout << "\n";
    27. //Eingabe der Rechenart
    28. if (zeichen > 4)
    29. {
    30. cout << "Sie muessen 1,2,3 oder 4 eingeben!";
    31. goto rechenart;
    32. }
    33. cout << "Geben sie x an: ";
    34. cin >> x;
    35. cout << "Geben sie y an: ";
    36. cin >> y;
    37. //Rechenart 1
    38. if (zeichen == 1)
    39. {
    40. ergebnis=x+y;
    41. }
    42. //Rechenart 2
    43. if (zeichen == 2)
    44. {
    45. ergebnis=x-y;
    46. }
    47. //Rechenart 3
    48. if (zeichen == 3)
    49. {
    50. ergebnis=x*y;
    51. }
    52. //Rechenart 4
    53. if (zeichen == 4)
    54. {
    55. ergebnis=x/y;
    56. }
    57. cout << "------------------\n";
    58. cout << "Das Ergebnis lautet: " << ergebnis;
    59. cout << "\n\n\n\n\n\n";
    60. cout << "Neue Rechnung? ";
    61. cin >> antwortja;
    62. if (antwortja == "ja")
    63. {
    64. goto Start;
    65. }
    66. }
    Alles anzeigen


    Gross- und Kleinschreibung:
    support.microsoft.com/kb/815783/de

    Division durch 0 ?

    goto steht schon in deinem Tutorial drin, das es kritisch werden kann. ;)

    Mal nach "switch" suchen.

    MfG bcc-fan
  • C-Quellcode

    1. #include <string>
    2. #include <iostream>
    3. using namespace std;
    4. int main ()
    5. {
    6. double ergebnis;
    7. double x;
    8. double y;
    9. double zeichen = 1;
    10. string antwortja = "j";
    11. cout << "\n\n";
    12. cout << "****************************\n";
    13. cout << "****** Taschenrechner ******\n";
    14. cout << "****************************\n\n\n";
    15. //Eingabe von Rechenart
    16. cout << "Druecken Sie [ ] und Enter...\n";
    17. cout << "(1) fuer Addition\n";
    18. cout << "(2) fuer Subtraktion\n";
    19. cout << "(3) fuer Multiplikation\n";
    20. cout << "(4) fuer Division\n\n";
    21. cout << "\n\n";
    22. cout << "Geben Sie ihre Rechenart an: ";
    23. cin >> zeichen;
    24. cout << "\n";
    25. //Eingabe der Rechenart
    26. if (zeichen > 4)
    27. {
    28. cout << "Sie muessen 1,2,3 oder 4 eingeben!";
    29. return main();
    30. }
    31. cout << "Geben sie x an: ";
    32. cin >> x;
    33. cout << "Geben sie y an: ";
    34. cin >> y;
    35. //Rechenart 1
    36. if (zeichen == 1)
    37. {
    38. ergebnis=x+y;
    39. }
    40. //Rechenart 2
    41. if (zeichen == 2)
    42. {
    43. ergebnis=x-y;
    44. }
    45. //Rechenart 3
    46. if (zeichen == 3)
    47. {
    48. ergebnis=x*y;
    49. }
    50. //Rechenart 4
    51. if (zeichen == 4)
    52. {
    53. ergebnis=x/y;
    54. }
    55. cout << "------------------\n";
    56. cout << "Das Ergebnis lautet: " << ergebnis;
    57. cout << "\n\n\n\n\n\n";
    58. /*
    59. cout << "Neue Rechnung? ";
    60. cin >> antwortja;
    61. if (antwortja == "ja") // hier haben wir das problem, dass "JA" und "jop" nicht gehen!
    62. {
    63. goto Start; // goto ist keine gute Loesung.
    64. }
    65. */
    66. cout << "Neue Rechnung? j/n:\n";
    67. cin >> antwortja;
    68. if (antwortja == "j")
    69. {
    70. return main();
    71. }
    72. }
    Alles anzeigen


    Man kann das auch noch verbessern, aber das würde den Code zu stark verändern.
    Aber fürs erst Programm nicht schlecht.
    Auch wenn man jetzt durch return main() zum Anfang kommt ist es immer noch besser als goto. Wenn du lernst neue Funktionen zu machen , dann kann man mit return alles "schöner" machen.
    mfg
  • Also hier eine einfache Version ohne goto oder ähnliche Verrenkungen:

    Todo hießt da sollte noch mal nachgedacht werden ;)

    Quellcode

    1. // Taschenrechner simpel
    2. // ToDo:
    3. // Operanten -> int oder besser ?
    4. // Bei der Division Sicherheitsabfrage einfügen!
    5. // Wenn der Rechner mehr leisten soll, dann ergaenzt ihn
    6. #include <iostream>
    7. using namespace std;
    8. int main ()
    9. {
    10. int zeichen;
    11. int O1, O2;
    12. bool bigloop;
    13. do
    14. {
    15. cout << "Bitte geben Sie den 1. Operanten ein: ";
    16. cin >> O1;
    17. bool loop = false;
    18. do
    19. {
    20. cout << "Geben Sie die Rechenart ein ( (1) -> + (2) -> - (3) -> * (4) -> / )" << endl;
    21. cout << ", nur Zahlen von 1 bis 4 werden aktzeptiert. ";
    22. cin >> zeichen;
    23. if ((zeichen >= 1) && (zeichen <=4))
    24. {
    25. loop = true;
    26. }
    27. else
    28. {
    29. cout << endl << " Rechenart nicht implementiert" << endl;
    30. }
    31. }while(!loop);
    32. cout << "Bitte geben Sie den 2. Operanten ein: ";
    33. cin >> O2;
    34. cout << endl;
    35. switch(zeichen)
    36. {
    37. case 1: cout << O1 << " + " << O2 << " = " << O1 + O2 << endl; break;
    38. case 2: cout << O1 << " - " << O2 << " = " << O1 - O2 << endl; break;
    39. case 3: cout << O1 << " * " << O2 << " = " << O1 * O2 << endl; break;
    40. case 4: cout << O1 << " / " << O2 << " = " << O1 / O2 << endl; break;
    41. default: cout << "\n\tSomething go's wrong";
    42. break;
    43. }
    44. bigloop = true;
    45. cout << endl << " Zeichen eingeben - 9 für neue Aufgabe" << endl; // statt der 9 etwa in J/N oder Y/N aendern
    46. cin >> zeichen;
    47. if (zeichen == 9)
    48. {
    49. bigloop = false;
    50. }
    51. }while(!bigloop);
    52. }
    Alles anzeigen


    MfG bcc-fan
  • Ich finde dieses Ergebnis am leichtesten :D





    Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <string>
    4. using namespace std;
    5. int eingabe;
    6. float zahl1;
    7. float zahl2;
    8. float ergebnis;
    9. string eingabe1;
    10. int main()
    11. {
    12. cout << " " << endl;
    13. cout << " " << endl;
    14. cout << " TASCHENRECHNER " << endl;
    15. cout << " " << endl;
    16. cout << " " << endl;
    17. cout << "Möchten sie eine Addition(1) Multiplikation(2) Division(3)\n oder Subraktion(4) durchführen?"<< endl;
    18. cin >> eingabe;
    19. cout << "Erste Zahl :" << endl;
    20. cin >> zahl1;
    21. cout << "Zweite Zahl : " << endl;
    22. cin >> zahl2;
    23. switch (eingabe)
    24. {
    25. case 1:
    26. cout << "Ergebnis : " << zahl1+zahl2 << endl;
    27. break;
    28. case 2:
    29. cout << "Ergebnis : " << zahl1*zahl2 << endl;
    30. break;
    31. case 3 :
    32. cout << "Ergebnis : " << zahl1/zahl2 << endl;
    33. break;
    34. case 4 :
    35. cout << "Ergebnis : " << zahl1 - zahl2 << endl;
    36. break;
    37. }
    38. cout << "Möchten sie nochmal" << endl;
    39. cin >> eingabe1;
    40. if (eingabe1=="ja" || eingabe1=="Ja")
    41. {
    42. return main();
    43. }
    44. system("PAUSE");
    45. return EXIT_SUCCESS;
    46. }
    Alles anzeigen