ein Taschenrechner programmieren, der Brüche + - * / nehmen kann



  • Hallo,
    ich habe ein großes Problem. Ich brauche ein programm, dass

    1. Brüche multiplizieren kann,

    2. Brüche dividieren kann,

    3. Brüche addieren kann,

    4. Brüche subtrahieren kann,

    und 5. Kürzen von Brüchen

    Das Ergebnis zweier Brüche soll, wenn es geht gekürzt werden.

    2..... das programm soll eine anzeige haben, wieviele brüche gerechnet wurden und wieviele in Prozent richtig sind.

    Extra: ein Knopf das selber neue Brüche erstellt zum üben.

    Kann mir jemand helfen oder irgendwelche Formeln etc geben, da ich keine ahnung habe, bitte helft mir!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



  • sowei ich weiss ist ein Bruch auch nur eine Division 🙄

    wo ist das Problem, wie sieht dein Ansatz aus und welche Gedanken hast du dir schon gemacht



  • Suchfunktion benutzen, Stichwort 'parser'.



  • Hi,

    Erstelle eine Klasse Bruch (Nicht vergessen die Null im Nenner abzufangen)
    implementiere in dieser Klasse Operatoren (+-*/)

    Gruß

    Martin



  • Hi, ich danke euch für eure Antworten. Mein Problem liegt wohl fast nur am Programmieren.

    Bis heute habe ich kein plan, wie eine bruch funktion aussehen muss, bzw. wie ich diese erstelle und alle zusammenfüge damit das läuft.

    Ich habe gehofft, dass jemand vielleicht sowas schon mal gemacht hat oder weiss wo ich ein beispiel finde, wo ich nur noch eintragen kann etc...

    Für euch ist das wahrscheinlich in 10 min erledigt, bloss ich sitzte jetzt schon mehrere std vorm pc und weiss nicht was ich tun soll



  • Hallo

    ueberleg dir

    - wie wuerde ich sowas per Hand machen
    - schreib dir das genau auf
    - erstell dir eine Klasse Bruch oder so
    - erzeug dir den Rest bzw frag dann wieder nach

    MfG
    Klaus



  • pede911 schrieb:

    Bis heute habe ich kein plan, wie eine bruch funktion aussehen muss, bzw. wie ich diese erstelle und alle zusammenfüge damit das läuft.

    Wenn du die Suchfunktion benutzt hättest und den Links in den so gefundenen Threads gefolgt wärst dann könntest du dir direkt den Quellcode eines kompletten Matheparsers ansehen.

    Verschoben nach "Rund um", da nicht BCB-spezifisch.



  • Iss doch glaub ich alles nicht so schwer.
    Wichtig ist das du ne Funtion hast die dir das kleinste gemeinsame vielfache ermittelt, da du ja alle Brüche gekürzt darstellen möchtest (ausserdem wäre es nicht sinvoll mit ungekürzten Brüchen zu rechnen).
    Meinen Überlegungen haben mich auf folgendes Ergebniss gebracht

    int bruch[2]; int kgv
     bruch[0]=irgend ein Zähler;
     bruch[1]=irgend ein Nenner;
     if (bruch[0] % bruch[1] == 0) { kgv=bruch[0]/bruch[1]; }
     else if (bruch[1] % bruch[0] == 0) { kgv=bruch[0]; }
    

    Das sollte eigentlich das kleinste gemeinsame Vielfache (kgv) ermitteln.
    Der gekürzte Bruch würde sich ja dann aus bruch[0]=bruch[0]/kgv und bruch[1]=bruch[1]/kgv ergeben.

    Wie man zwei Zahlen Addiert, Subtrahiert und Multipliziert sollte ja wohl klar sein. Die Division ist auch kein Problem. Einfach Bruch 1 mal Kehrwert von Bruch 2 und schon ist alles fertig.
    Zum schluss vielleicht noch mal versuchen zu kürtzen und das wars.
    Herrlich.

    PS: Hoffentlich ist das einiger maßen richtig. Ich bürge für nichts



  • Was Du meinst ist der ggT und nicht der kgV, für dessen Berechnung würde ich auf den euklidischen Algorithmus verweisen da gibt es tausende von Seiten im Netz.

    Ansonsten würd ich sagen wir fangen hier mal an ne Klasse Bruch zu implementieren, ich mach mal folgenden Vorschlag:

    int ggT(int a, int b); // ggT implementieren
    int kgV(int a, int b); // kgV implementieren, leicht, kgV(a,b) = a*b/ggT(a,b)
    
    class Bruch
    {
      // implizite Konvertierung von int nach Bruch erwünnscht
      Bruch(int z, int n=1) { if(n==0)
                                throw std::logic_error("Nenner 0");
                              zaehler=z; nenner=n; kuerze();
      }
    
      // Default Copy+Assignment sind okay
    
      int getZaehler() const { return zaehler; }
      int getNenner () const { return nenner;  }
    
      Bruch & operator+=(const Bruch & rhs);
      Bruch & operator-=(const Bruch & rhs);
      Bruch & operator*=(const Bruch & rhs);
      Bruch & operator/=(const Bruch & rhs); // Multiplikation mit Kehrwert
    private:
      void kuerze();  // noch zu implementieren, einfach zaehler, nenner durch
                      // ggT(zaehler, nenner) teilen
    
      int zaehler, nenner;
    }
    
    ostream & operator<<(ostream & os, const Bruch & b)
    {
      return os << b.getZaehler() << '/' << b.getNenner;
    }
    

    So, das ist mal ein Anfang. Den Rest müßtest Du eigentlich selbst hinkriegen.
    Viel Erfolg noch!
    Jester



  • Hi, ich muss den aber mit borland c++ Builder programmieren, kann ich dann den code dann auch nehmen????



  • pede911 schrieb:

    Hi, ich muss den aber mit borland c++ Builder programmieren, kann ich dann den code dann auch nehmen????

    Ja. Nur wenn du eine Windowsoberfläche und keine Conslenausgabe haben willst,
    musst du den op<< weglassen. Wenn dir das aber nicht klar ist, würd ich noch mal
    in das eine oder andere Tut schauen (zB das von Volkrad, zu finden auf dieser
    Seite).



  • Schreibs doch erstmal auf Konsole. Wenn dann die Rechensachen an sich fertig sind kannste noch die Oberfläche drüberklatschen und fertig.



  • ich kann das nicht anders, als erst das grapfische machen und dann draufdrücken und dann programmieren. Bin ein Anfänger



  • Dann versuch's halt mal. Andersrum wird's meistens beschissen.

    Mach mal ein Konsolenprogramm, kopier Dir den Code von oben rein und versuch ihn zum Laufen zu bringen. Nimm mal noch die folgende main dazu:

    int main()
    {
      Bruch b(2,3);
      cout << b << endl;
    }
    

    Ganz vorne
    #include<iostream>
    using namespace std;

    nicht vergessen.

    MfG Jester



  • Hi Jester, ich habe jetzt angefangen, weiss aber nicht genau wie ich das einsetzten kann.

    Kann ich dir mein Programm mal schicken?

    Habe mich bei eurem Board angemeldet, mein Name ist Pede



  • Wo klemmt's denn? Ansonsten kannste ruhig mal schicken, morgen hab ich wahrscheinlich ein bißchen Zeit.



  • Hi Jester, wie ist deine email, damit ich dir das programm schicke





  • Hi, habe dir jetzt das Programm geschickt.

    Also ich dachte mir den taschenrechner so, dass man einerseits brüche selber eingeben kann und dann auf die jeweilige Taste drückt, wenn man den Bruch + - * / nehmen möchte.

    Wenn man auf den Button Bruch generieren drückt, soll das programm zwei brüche erstellen und eine variante aussuchen, also + - * /

    Was ich vergessen habe, wo ich auch gar keine ahnung von habe

    Das prgramm soll die anzahl der gerechneten brüche zählen und die richtigen lösungen in prozentzahl angeben

    Zu sehen soll sein " Anzahl der gerechneten Aufgaben:"

    davon richtig : Prozentzahl.

    Wäre echt super geil, wenn du mir helfen könntest. Können auch gerne per icq oder aim oder mirc reden.

    meine icq nr: 13566724


Anmelden zum Antworten