Taschenrechner (Anfänger) Kritik erwünscht

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

  • SwiPP schrieb:

    @ Composer.
    Man kann ja auswählen, ob man noch eine Rechnung durchführen will oder nicht.

    @ superuser.
    Ich finde es ist für den Beginn eine gute Übung, um zu sehen, wie ein Programm funktioniert, wie weit man mit if und while gehen kann. Klar kann man das auch mit Arrays schöner darstellen, aber für den Beginn ist das doch ganz gut, mMn.


    Hast mich falsch verstanden. Hier ein sehr sehr einfaches schnell zusammengehacktes Beispiel:

    Quellcode

    1. #include <cmath>
    2. #include <iostream>
    3. #include <string>
    4. #include <vector>
    5. #define BUFFER_SIZE 128
    6. float multiply(const float a, const float b)
    7. {
    8. return (a*b);
    9. }
    10. float divide(const float a, const float b)
    11. {
    12. if ( b == 0 )
    13. {
    14. return -1;
    15. }
    16. return (a / b);
    17. }
    18. bool identify(const std::string& str)
    19. {
    20. int find = 0;
    21. // Multiply
    22. find = str.find("*") ;
    23. if ( find != std::string::npos )
    24. {
    25. std::string a = str.substr(0, find);
    26. std::string b = str.substr(find + 1, str.length());
    27. float a1 = atof(a.c_str());
    28. float b1 = atof(b.c_str());
    29. std::cout << "Ergebnis der Multiplikation " << a1 << " * " << b1
    30. << " : " << multiply(a1, b1) << std::endl;
    31. return true;
    32. }
    33. // Divide
    34. find = str.find("/") ;
    35. if ( find != std::string::npos )
    36. {
    37. std::string a = str.substr(0, find);
    38. std::string b = str.substr(find + 1, str.length());
    39. float a1 = atof(a.c_str());
    40. float b1 = atof(b.c_str());
    41. std::cout << "Ergebnis der Division " << a1 << " / " << b1
    42. << " : " << divide(a1, b1) << std::endl;
    43. return true;
    44. }
    45. return false;
    46. }
    47. int main(int argc, char** argv)
    48. {
    49. char input[BUFFER_SIZE];
    50. std::cout << "Bitte Rechnung eingeben: ";
    51. std::cin.getline(input, BUFFER_SIZE);
    52. if ( !identify(input) )
    53. {
    54. std::cout << "Keine gueltige Rechnung erkannt!" << std::endl;
    55. }
    56. }
    Alles anzeigen

    Sowas schafft auch nen Anfänger und ist ne super Übung Richtung lexikalisches Parsing.
    MfG
    Sometimes it pays to stay in bed in Monday, rather than spending the rest of the week debugging Monday's code. ~Dan Salomon
  • Entschuldigung an alle, habe vergessen mich abzumelden.
    Ich wohne in einer Einrichtung und bin deshalb nur am 1&3 Wochenende zuhause.
    @superuser
    Ich habe C++ in einem Buch gelernt, in dem nur die Grundlagen vorkommen.
    Daher kenne ich einige Befehle nicht.
    Vieleicht muss diese ein 7-Klässler auch noch nicht kennen.
    Bin jedenfalls dabei, und wenn es geht, kann ich auch mal herumexperimentieren.

    Grüsse Pokertom
    Du bist Terrorist, warum? Siehe hier

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von pokertom ()

  • @SwiPP
    Stimmt ist gar nicht so schwer.:
    Deklarationen der Variablen:

    double aktuell;
    int mittel;
    int mitte;


    Mittelwert unter Grundrechenarten Nr.5

    case 5:
    cout << "Geben Sie die Menge der Zahlen an.:" << endl; cin >> stk;
    while ( stk > 0 )
    {
    cout << "Geben Sie eine Zahl ein.:" << endl; cin >> aktuell;
    mitte += aktuell;
    stk--;
    mittel++;
    }
    cout << "Der Mittelwert beträgt.:" << mitte / mittel << endl;
    }
    break;
    Du bist Terrorist, warum? Siehe hier

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

  • An alle:
    Da ihr euch nicht mehr gemeldet habt werde ich mal ein paar Eigen-C++-Lernstunde dem Taschenrechner vorziehen.
    Denn:
    Bei diesen vielen mir unbekannten Befehlen brauche ich noch eine bestimmte Zeit,
    des lernen wegens,
    um die komplette Lage des Taschenrechner noch einmal zu überarbeiten.
    (Sonst macht es in meinem Kopf nicht klick, sonder bumm!) ?(
    Liebe Grüße Pokertom
    Du bist Terrorist, warum? Siehe hier
  • Hier bin ich wieder, mit mehr Erfahrung als vorher, und wollte weitermachen, ich habe erstmal ein Programm erstellt, welches Volumen, radius,
    Durchmesser und Oberfläche allein aus einem einzigen Wert berechnet, hoffe, dass es übersichtlich genug ist...
    Außerdem würde ich gerne wissen, wie man cin.get benutzt, verstehe es nicht wirklich???
    Sorry, denkt euch das ü einfach weg, das habe ich nachtraglich noch angehangen. Da gabs doch was mit unsigned char?
    Dateien
    Du bist Terrorist, warum? Siehe hier
  • Sorry für den ganzen Text, aber was cin.get() ist, weiß ich nur so angewendet klappts bei mir nicht. Ich wusste nicht, dass cin.get() mit Semikolon abgeschlossen werden muss, danke für die Hilfe, aber ich brauche nochmals Hilfe, jetzt kompilert er zwar, aber beendet ohne weitere Abfrage wie zuvor! xD
    Außerdem habe ich das #include <iostream> aus der Quelldatei entfernt.

    Quellcode

    1. //Taschenrechner.cpp
    2. #include <cmath>
    3. #include "Formeln.hpp"
    4. int main()
    5. {
    6. int eingabe;
    7. std::cout << "Geben Sie bitte den Wert ein, den sie kennen" << std::endl;
    8. std::cout << "<1> Oberfläche" << std::endl;
    9. std::cout << "<2> Volumen" << std::endl;
    10. std::cout << "<3> Durchmesser" << std::endl;
    11. std::cout << "<4> Radius" << std::endl;
    12. std::cin >> eingabe;
    13. switch (eingabe)
    14. {
    15. case 1:
    16. Ko();
    17. std::cin.get();
    18. break;
    19. case 2:
    20. Kv();
    21. std::cin.get();
    22. break;
    23. case 3:
    24. Kd();
    25. std::cin.get();
    26. break;
    27. case 4:
    28. Kr();
    29. std::cin.get();
    30. default:
    31. std::cout << "Bitte Zahlen von 1 - 4 angeben." << std::endl;
    32. std::cout << "(Nicht erlaubt sind Buchstaben, Sonderzeichen und Kommazahlen)" << std::endl;
    33. }
    34. return 0;
    35. }
    Alles anzeigen

    Quellcode

    1. //Formeln.hpp
    2. #ifndef FORMELN_H
    3. #define FORMELN_H
    4. #include <iostream>
    5. #define pi 3.1415926535897932384626433832795
    6. double x, y, z, a, b, c, r;
    7. void Kv()
    8. {
    9. std::cout << "Geben Sie bitte das Volumen an." << std::endl;
    10. std::cin >> x;
    11. r = 2 * std::sqrt(x / (4 / 3 * pi));
    12. y = (4 / 3) * pi * r * r * r;
    13. std::cout << "Oberfläche: " << y << std::endl;
    14. std::cout << "Durchmesser: " << r / 2 << std::endl;
    15. std::cout << "Radius: " << r << std::endl;
    16. }
    17. void Ko()
    18. {
    19. std::cout << "Geben Sie bitte die Oberfläche an:" << std::endl;
    20. std::cin >> x;
    21. r = sqrt(x/(4 * pi));
    22. y = (4 / 3) * pi * r * r * r;
    23. std::cout << "Volumen: " << y << std::endl;
    24. std::cout << "Durchmesser: " << r / 2 << std::endl;
    25. std::cout << "Radius: " << r << std::endl;
    26. }
    27. void Kd()
    28. {
    29. std::cout << "Geben Sie bitte den Durchmesser an." << std::endl;
    30. std::cin >> x;
    31. r = (x / 2);
    32. y = 4 * pi * r * r;
    33. std::cout << "Oberfläche: " << y << std::endl;
    34. y = (4 / 3) * pi * r * r * r;
    35. std::cout << "Volumen: " << y << std::endl;
    36. std::cout << "Radius " << r << std::endl;
    37. }
    38. void Kr()
    39. {
    40. std::cout << "Geben Sie bitte den Radius an." << std::endl;
    41. std::cin >> x;
    42. r = x;
    43. y = 4 * pi * r * r;
    44. std::cout << "Oberfläche: " << y << std::endl;
    45. y = (4 / 3) * pi * r * r * r;
    46. std::cout << "Volumen: " << y << std::endl;
    47. std::cout << "Durchmesser " << r * 2 << std::endl;
    48. }
    49. #endif
    Alles anzeigen
    Du bist Terrorist, warum? Siehe hier
  • Hat sich erledigt, benutze einfach die c Funktion getch:

    Quellcode

    1. //Taschenrechner.cpp
    2. #include <cmath>
    3. #include <iostream>
    4. #include "Formeln.hpp"
    5. int main()
    6. {
    7. int eingabe;
    8. std::cout << "Geben Sie bitte den Wert ein, den sie kennen" << std::endl;
    9. std::cout << "<1> Oberfl\204che" << std::endl;
    10. std::cout << "<2> Volumen" << std::endl;
    11. std::cout << "<3> Durchmesser" << std::endl;
    12. std::cout << "<4> Radius" << std::endl;
    13. std::cin >> eingabe;
    14. switch (eingabe)
    15. {
    16. case 1:
    17. Ko();
    18. break;
    19. case 2:
    20. Kv();
    21. break;
    22. case 3:
    23. Kd();
    24. break;
    25. case 4:
    26. Kr();
    27. break;
    28. default:
    29. std::cout << "Bitte Zahlen von 1 - 4 angeben." << std::endl;
    30. std::cout << "(Nicht erlaubt sind Buchstaben, Sonderzeichen und Kommazahlen)" << std::endl;
    31. }
    32. return 0;
    33. }
    Alles anzeigen


    Quellcode

    1. //Formeln.hpp
    2. #ifndef FORMELN_HPP
    3. #define FORMELN_HPP
    4. #include <conio.h>
    5. #define pi 3.1415926535897932384626433832795
    6. double x, y, z, a, b, c, r;
    7. void Kv()
    8. {
    9. std::cout << "Geben Sie bitte das Volumen an." << std::endl;
    10. std::cin >> x;
    11. r = 2 * std::sqrt(x / (4 / 3 * pi));
    12. y = (4 / 3) * pi * r * r * r;
    13. std::cout << "Oberfl\204che: " << y << std::endl;
    14. std::cout << "Durchmesser: " << r / 2 << std::endl;
    15. std::cout << "Radius: " << r << std::endl;
    16. getch();
    17. }
    18. void Ko()
    19. {
    20. std::cout << "Geben Sie bitte die Oberfl\204che an:" << std::endl;
    21. std::cin >> x;
    22. r = sqrt(x/(4 * pi));
    23. y = (4 / 3) * pi * r * r * r;
    24. std::cout << "Volumen: " << y << std::endl;
    25. std::cout << "Durchmesser: " << r / 2 << std::endl;
    26. std::cout << "Radius: " << r << std::endl;
    27. getch();
    28. }
    29. void Kd()
    30. {
    31. std::cout << "Geben Sie bitte den Durchmesser an." << std::endl;
    32. std::cin >> x;
    33. r = (x / 2);
    34. y = 4 * pi * r * r;
    35. std::cout << "Oberfl\204che: " << y << std::endl;
    36. y = (4 / 3) * pi * r * r * r;
    37. std::cout << "Volumen: " << y << std::endl;
    38. std::cout << "Radius " << r << std::endl;
    39. getch();
    40. }
    41. void Kr()
    42. {
    43. std::cout << "Geben Sie bitte den Radius an." << std::endl;
    44. std::cin >> x;
    45. r = x;
    46. y = 4 * pi * r * r;
    47. std::cout << "Oberfl\204che: " << y << std::endl;
    48. y = (4 / 3) * pi * r * r * r;
    49. std::cout << "Volumen: " << y << std::endl;
    50. std::cout << "Durchmesser " << r * 2 << std::endl;
    51. getch();
    52. }
    53. #endif
    Alles anzeigen
    Du bist Terrorist, warum? Siehe hier

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

  • Hallo,

    ich würde vielleicht zwischen den einzelnen Menüs und Rechnungen den Konsoleninhalt leeren, also z.B. das man nur den letzten Befehl sieht.
    Bsp.:

    Quellcode

    1. //Taschenrechner.cpp
    2. #include <cmath>
    3. #include <iostream>
    4. #include "Formeln.hpp"
    5. int main()
    6. {
    7. int eingabe;
    8. std::cout << "Geben Sie bitte den Wert ein, den sie kennen" << std::endl;
    9. std::cout << "<1> Oberfl\204che" << std::endl;
    10. std::cout << "<2> Volumen" << std::endl;
    11. std::cout << "<3> Durchmesser" << std::endl;
    12. std::cout << "<4> Radius" << std::endl;
    13. std::cin >> eingabe;
    14. system("CLS");
    15. switch (eingabe)
    16. {
    17. case 1:
    18. Ko();
    19. break;
    20. system("CLS");
    21. case 2:
    22. Kv();
    23. break;
    24. system("CLS");
    25. case 3:
    26. Kd();
    27. break;
    28. system("CLS");
    29. case 4:
    30. Kr();
    31. break;
    32. system("CLS");
    33. default:
    34. std::cout << "Bitte Zahlen von 1 - 4 angeben." << std::endl;
    35. std::cout << "(Nicht erlaubt sind Buchstaben, Sonderzeichen und Kommazahlen)" << std::endl;
    36. }
    37. return 0;
    38. }
    Alles anzeigen

    Das ist zwar nicht zwingend notwendig, aber es sieht nachher besser aus^^.

    MfG,

    Alpha_Delta

    P.S.: Anstelle des "CLS" Befehls kannst du jeden CMD Befehl in system("...."); nehmen, vorausgesetzt, du inkludierst :thumbsup: <iostream> und dass du WINDOOF hast :D .
    „Wer einen Fehler gemacht hat und ihn nicht korrigiert, begeht einen zweiten.“ -- Konfuzius