Verbesserungen für meinen Code

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

    • Verbesserungen für meinen Code

      Hallo lieber M-Core User, ich habe am Samstag angefangen c++ zu lernen mit dem sicher wohl bekannten Buch C++ von A bis Z. Da ich nun heute die
      do...while Schleife im Buch als neues Thema hatte, dachte ich mir, das ich mal einen kleinen Taschenrechner schreibe um die Schleife sozusagen zu üben. Es klappt alles soweit wunderbar, allerdings sagte ein Freund von mir, der schon länger C++ lernt, das der Code noch zu verbessern sei, ich wollte natürlich nicht wissen wie, sondern wo. Allerdings hat er mir natürlich auch dies nicht verraten, da ich allerdings gerne wissen würde wo, damit ich daran arbeiten kann bzw. herausfinden kann was dort zu verbessern ist, dachte ich ich Frage mal hier in meinem neuen Forum nach :)

      Nun nach langer Rede hier noch endlich der Code hehe :

      C-Quellcode

      1. // Rechner by Asura Cryin v1.0.2
      2. #include <iostream>
      3. #include <cstdlib>
      4. using namespace std;
      5. int var, var1, var2;
      6. int main(void) {
      7. do {
      8. // Aufforderung zur Wahl der Rechenart
      9. cout << "\nBitte eine Rechenart waehlen : \n";
      10. cout << "-1- Addition \n";
      11. cout << "-2- Subtraktion \n";
      12. cout << "-3- Multiplikation \n";
      13. cout << "-4- Division \n";
      14. cout << "-5- Ende \n";
      15. if( !(cin >> var)) {
      16. cerr << "Fehler bei der Eingabe ! \n";
      17. exit(1);
      18. }
      19. // Beginn der Rechnungen und so
      20. switch (var) {
      21. case 1 :
      22. cout << "Sie haben Addition gewaehlt \n";
      23. cout << "Bitte Zahl eins eingeben : ";
      24. if( !(cin >> var1)) {
      25. cerr << "Fehler bei der Eingabe! ";
      26. exit(1);
      27. }
      28. cout << "Bitte Zahl zwei eingeben : ";
      29. if( !(cin >> var2)) {
      30. cerr << "Fehler bei der Eingabe! ";
      31. exit(1);
      32. }
      33. cout << var1 << " + " << var2 << " = " << (var1+var2);
      34. break;
      35. case 2 :
      36. cout << "Sie haben Subtraktion gewaehlt \n";
      37. cout << "Bitte Zahl eins eingeben : ";
      38. if( !(cin >> var1)) {
      39. cerr << "Fehler bei der Eingabe! ";
      40. exit(1);
      41. }
      42. cout << "Bitte Zahl zwei eingeben : ";
      43. if( !(cin >> var2)) {
      44. cerr << "Fehler bei der Eingabe! ";
      45. exit(1);
      46. }
      47. cout << var1 << " - " << var2 << " = " << (var1-var2);
      48. break;
      49. case 3 :
      50. cout << "Sie haben Multiplikation gewaehlt \n";
      51. cout << "Bitte Zahl eins eingeben : ";
      52. if( !(cin >> var1)) {
      53. cerr << "Fehler bei der Eingabe! ";
      54. exit(1);
      55. }
      56. cout << "Bitte Zahl zwei eingeben : ";
      57. if( !(cin >> var2)) {
      58. cerr << "Fehler bei der Eingabe! ";
      59. exit(1);
      60. }
      61. cout << var1 << " * " << var2 << " = " << (var1*var2);
      62. break;
      63. case 4 :
      64. cout << "Sie haben Division gewaehlt \n";
      65. cout << "Bitte Zahl eins eingeben : ";
      66. if( !(cin >> var1)) {
      67. cerr << "Fehler bei der Eingabe! ";
      68. exit(1);
      69. }
      70. cout << "Bitte Zahl zwei eingeben : ";
      71. if( !(cin >> var2)) {
      72. cerr << "Fehler bei der Eingabe! ";
      73. exit(1);
      74. }
      75. cout << var1 << " / " << var2 << " = " << (var1/var2);
      76. break;
      77. case 5 :
      78. cout << "Sie haben Ende gewaehlt \n";
      79. cout << "Das Programm wird beendet ";
      80. break;
      81. default :
      82. cout << "Fehler bei der Eingabe";
      83. break;
      84. }
      85. } while(var !=5);
      86. return 0;
      87. }
      Alles anzeigen
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Hallo, ich meld mich mal wieder haha xP. Nun, ich hab mich dann heute Morgen dann noch einmal dran gesetzt und einen neuen Rechner gecodet(Übung macht ja bekanntlich den Meister ^^). Hab mir natürlich ein, zwei Erweiterungen einfallen lassen ^^ Allerdings macht er nun Zicken bei der Division o.o
      Alles was ich eingebe kommt mit einem total falschen Ergebnis raus, auch die Wiedergabe der Variablen ist falsch. Aber ich weiß nicht wieso.

      Hier einmal der abschnitt :

      Quellcode

      1. if (wahl1==1) {
      2. cout << "Sie möchten zwei Zahlen dividieren\n";
      3. cout << "Bitte Zahl eins eingeben\n";
      4. if( !(cin >> var)) {
      5. cerr << "Error! Fehler bei der Eingabe!\n";
      6. break;
      7. }
      8. cout << "Bitte Zahl zwei eingeben\n";
      9. if( !(cin >> var)) {
      10. cerr << "Error! Fehler bei der Eingabe!\n";
      11. break;
      12. }
      13. cout << var << " / " << var1 << " = " << (var/var1);
      14. break;
      Alles anzeigen
      könnte es daran liegen das long double nicht dafür geeignet ist?^^ (ich weiß auch das ich keinen Schutz vor 0 Divisionen habe und es dann ''crashd")
      wäre über Hilfe erfreut

      Edit: also ich hab das mal getestet, wenn ich int als Datentyp nutze geht es, mit long double allerdings nicht.
      Woran liegt das? Würde mich mal interessieren :O
    • Float ist ungenau double ist denke ich schon der richtige datentyp
      Du konntest anstatt bei jeder Aufgabe die zahlen einlesen konntest du dies schon vor dem Switch Case machen somit sparst du Code

      so würde das dann aussehen

      Quellcode

      1. cout << "[1]Addition \n" << "[2]Subtraktion\n" << "[3]Multiplikation\n" << "[4]Division\n";
      2. int select;
      3. if (!(cin >> select)) {cerr << "Fehler";cin.get();}
      4. double in1, in2;
      5. cout << "Zahl1 eingeben\n";
      6. if (!(cin >> in1)) {cerr << "Fehler";cin.get(); }
      7. cout << "Zahl2 eingeben\n";
      8. if (!(cin >> in2)) {cerr << "Fehler";cin.get(); }
      9. switch (select) {
      10. case 1 : cout << (in1+in2) << "\n"; break;
      11. case 2 : cout << (in1-in2) << "\n"; break;
      12. case 3 : cout << (in1*in2) << "\n"; break;
      13. case 4 : cout << (in1/in2) << "\n"; break;
      14. }
      Alles anzeigen