000
23.04.2005, 17:09 Uhr
spit
|
Also ich habe eine Bruch Klasse geschrieben in der ich Brüche addieren, subtrahieren, multiplizieren und dividieren kann. Aber irgendwas stimmt da nicht ganz. Findet wer den Fehler?? (habs in Visual C++ 6.0 gemacht)
Das Ergebniss wird aus irgend einem Grund nicht ausgegeben, bin mir aber nicht sicher ob es überhaupt richtig rechnet.
so hier das proggi:
Code: |
////////// Bruch.h ////////// #ifndef BRUCH_H #define BRUCH_H
#include <iostream.h>
class Bruch{ friend ostream& operator << (ostream &os,const Bruch &next){ os<<next.getZaehler()<<"/"<<next.getNenner(); return os; } friend istream& operator >> (istream &is,Bruch &next){ is>>next.zaehler; is>>next.nenner; return is; } public: Bruch(); Bruch(int a, int b); ~Bruch();
int getZaehler()const{return zaehler;} int getNenner()const{return nenner;}
Bruch operator + (const Bruch &next); Bruch operator - (const Bruch &next); Bruch operator * (const Bruch &next); Bruch operator / (const Bruch &next);
int kgV(); void kurz(); private: int zaehler, nenner; int ggT(int a,int b); };
#endif
|
Code: |
////////// Bruch.cpp ////////// #include "Bruch.h"
Bruch::Bruch(){ zaehler=0; nenner=1; }
Bruch::Bruch(int a, int b){ zaehler=a; nenner=b; }
Bruch::~Bruch(){ }
Bruch Bruch::operator + (const Bruch &next){ Bruch tmp((zaehler * next.nenner) + (next.zaehler * nenner), nenner * next.nenner); tmp.kurz(); return tmp; }
Bruch Bruch::operator - (const Bruch &next){ Bruch tmp((zaehler * next.nenner) - (next.zaehler * nenner), nenner * next.nenner); tmp.kurz(); return tmp; }
Bruch Bruch::operator * (const Bruch &next){ Bruch tmp (zaehler*next.zaehler, nenner*next.nenner); tmp.kurz(); return tmp; } Bruch Bruch::operator / (const Bruch &next){ Bruch tmp (zaehler*next.nenner, nenner*next.zaehler); tmp.kurz(); return tmp; }
int Bruch::kgV(){ return((zaehler*nenner)/ggT(zaehler,nenner)); }
int Bruch::ggT(int a,int b){ return ((b == 0)? a:ggT(b,a%b)); }
void Bruch::kurz(){ int zahl; do{ zahl=kgV(); nenner=nenner/zahl; zaehler=zaehler/zahl; }while(zahl!=1); }
|
Code: |
////////// Hauptprogramm.cpp ////////// #include "Bruch.h" #include <stdlib.h> int main(){ int a,b; cout<<endl<<" Bitte geben Sie einen Bruch ein!"<<endl; cout<<" Zaehler: "; cin>>a; cout<<" Nenner: "; cin>>b; Bruch bruch_one(a,b);
system("cls"); cout<<endl<<" Was wollen Sie nun tun??"; cout<<endl<<" Addieren...........1"; cout<<endl<<" Subtrahieren.......2"; cout<<endl<<" Multiplizieren.....3"; cout<<endl<<" Dividieren.........4"; cout<<endl<<" EINGABE: ";
int eingabe; cin>>eingabe; system("cls");
if(eingabe==1){ cout<<endl<<" Welchen Bruch moechten Sie addieren?"; cout<<endl<<" Zaehler: "; cin>>a; cout<<" Nenner: "; cin>>b; Bruch bruch_two(a,b); cout<<endl<<endl<<" Ergebniss: "<<bruch_one+bruch_two; }else if(eingabe==2){ cout<<endl<<" Welchen Bruch moechten Sie subtrahieren?"; cout<<endl<<" Zaehler: "; cin>>a; cout<<" Nenner: "; cin>>b; Bruch bruch_two(a,b); cout<<endl<<endl<<" Ergebniss: "<<bruch_one-bruch_two; }else if(eingabe==3){ cout<<endl<<" Welchen Bruch moechten Sie multiplizieren?"; cout<<endl<<" Zaehler: "; cin>>a; cout<<" Nenner: "; cin>>b; Bruch bruch_two(a,b); cout<<endl<<endl<<" Ergebniss: "<<bruch_one*bruch_two; }else if(eingabe==4){ cout<<endl<<" Welchen Bruch moechten sie dividieren?"; cout<<endl<<" Zaehler: "; cin>>a; cout<<" Nenner: "; cin>>b; Bruch bruch_two(a,b); cout<<endl<<endl<<" Ergebniss: "<<bruch_one/bruch_two; } system("pause"); return 0; }
|
Danke im voraus an den der mir sagen kann was falsch is!!! mfg spit |