<br />
<b>Warning</b>:  Undefined array key "HTTP_REFERER" in <b>/var/www/vhosts/web61970.ssd-space.de/phi.pf-control.de/uni/download.php</b> on line <b>13</b><br />
#include <iostream>
using namespace std;

class bruch{
   private:
      int nenner, zaehler;
   public:      
      void setnenner(int zahl){
         nenner=zahl;     
      }                
      void setzaehler(int zahl){
         zaehler=zahl;     
      }                
      int getnenner(){
         return nenner;     
      }                
      int getzaehler(){
         return zaehler;   
      }  
};
class bruchrechnung{
   private:
      bruch z3;
      int abs(int z){if(z<0)return -z; else return z;}
   public:
      bruch add(bruch b1, bruch b2){
         z3.setzaehler(b1.getzaehler()*b2.getnenner()+b1.getnenner()*b2.getzaehler());
         z3.setnenner(b1.getnenner()*b2.getnenner());
         return z3;
      } 
      bruch sub(bruch b1, bruch b2){
         z3.setzaehler(b1.getzaehler()*b2.getnenner()-b1.getnenner()*b2.getzaehler());
         z3.setnenner(b1.getnenner()*b2.getnenner());
         return z3;
      }    
      bruch mult(bruch b1, bruch b2){
         z3.setzaehler(b1.getzaehler()*b2.getzaehler());
         z3.setnenner(b1.getnenner()*b2.getnenner());
         return z3;
      }      
      bruch div(bruch b1, bruch b2){
         z3.setzaehler(b1.getzaehler()*b2.getnenner());
         z3.setnenner(b1.getnenner()*b2.getzaehler());
         return z3;
      }      
      bruch kurz(bruch b1){
         int i=2;
         z3=b1;
         
         while(i<=abs(z3.getnenner())&&i<=abs(z3.getzaehler())){
            if(z3.getnenner()%i==0&&z3.getzaehler()%i==0){
               z3.setnenner(z3.getnenner()/i);                
               z3.setzaehler(z3.getzaehler()/i);
            }else i++;   
         }
         return z3;
      }           
};

int main(){
   cout<<"Beispielrechnungen:\n";
   bruch b1,b2,b3;
   bruchrechnung brech;
   b1.setzaehler(7);
   b2.setzaehler(3);
   b1.setnenner(8);
   b2.setnenner(4);
   cout<<b1.getzaehler()<<"/"<<b1.getnenner()<<" + ";
   cout<<b2.getzaehler()<<"/"<<b2.getnenner()<<" = ";
   b3=brech.add(b1,b2);
   cout<<b3.getzaehler()<<"/"<<b3.getnenner()<<" = ";
   b3=brech.kurz(b3);
   cout<<b3.getzaehler()<<"/"<<b3.getnenner()<<endl;
   cout<<b1.getzaehler()<<"/"<<b1.getnenner()<<" - ";
   cout<<b2.getzaehler()<<"/"<<b2.getnenner()<<" = ";
   b3=brech.sub(b1,b2);
   cout<<b3.getzaehler()<<"/"<<b3.getnenner()<<" = ";
   b3=brech.kurz(b3);
   cout<<b3.getzaehler()<<"/"<<b3.getnenner()<<endl;
   cout<<b1.getzaehler()<<"/"<<b1.getnenner()<<" * ";
   cout<<b2.getzaehler()<<"/"<<b2.getnenner()<<" = ";
   b3=brech.mult(b1,b2);
   cout<<b3.getzaehler()<<"/"<<b3.getnenner()<<" = ";
   b3=brech.kurz(b3);
   cout<<b3.getzaehler()<<"/"<<b3.getnenner()<<endl;
   cout<<b1.getzaehler()<<"/"<<b1.getnenner()<<" / ";
   cout<<b2.getzaehler()<<"/"<<b2.getnenner()<<" = ";
   b3=brech.div(b1,b2);
   cout<<b3.getzaehler()<<"/"<<b3.getnenner()<<" = ";
   b3=brech.kurz(b3);
   cout<<b3.getzaehler()<<"/"<<b3.getnenner()<<endl;   
   
   char e;
   int zaehl1,zaehl2,nenn1,nenn2;
   do{
      zaehl1=0;zaehl2=0;nenn1=0;nenn2=0;
      cout<<"\n\nMenue:\n (A)ddition, (S)ubtraktion, (M)ultiplikation, (D)ivision, (K)uerzen, (E)nde\nMethode:";
      cin>>e;
      switch(e){
         case 'A': case 'a':
            cout<<"Zaehler1:";
            cin>>zaehl1;
            b1.setzaehler(zaehl1);
            do{
               cout<<"Nenner1:";
               cin>>nenn1;
            }while(nenn1==0);            
            b1.setnenner(nenn1);
            cout<<"Zaehler2:";
            cin>>zaehl2;
            b2.setzaehler(zaehl2);
            do{
               cout<<"Nenner2:";
               cin>>nenn2;
            }while(nenn2==0);            
            b2.setnenner(nenn2);            
            cout<<b1.getzaehler()<<"/"<<b1.getnenner()<<" + ";
            cout<<b2.getzaehler()<<"/"<<b2.getnenner()<<" = ";
            b3=brech.add(b1,b2);
            cout<<b3.getzaehler()<<"/"<<b3.getnenner();
            break;   
         case 'S': case 's':
            cout<<"Zaehler1:";
            cin>>zaehl1;
            b1.setzaehler(zaehl1);
            do{
               cout<<"Nenner1:";
               cin>>nenn1;
            }while(nenn1==0);            
            b1.setnenner(nenn1);
            cout<<"Zaehler2:";
            cin>>zaehl2;
            b2.setzaehler(zaehl2);
            do{
               cout<<"Nenner2:";
               cin>>nenn2;
            }while(nenn2==0);            
            b2.setnenner(nenn2);            
            cout<<b1.getzaehler()<<"/"<<b1.getnenner()<<" - ";
            cout<<b2.getzaehler()<<"/"<<b2.getnenner()<<" = ";
            b3=brech.sub(b1,b2);
            cout<<b3.getzaehler()<<"/"<<b3.getnenner();
            break;      
         case 'M': case 'm':
            cout<<"Zaehler1:";
            cin>>zaehl1;
            b1.setzaehler(zaehl1);
            do{
               cout<<"Nenner1:";
               cin>>nenn1;
            }while(nenn1==0);            
            b1.setnenner(nenn1);
            cout<<"Zaehler2:";
            cin>>zaehl2;
            b2.setzaehler(zaehl2);
            do{
               cout<<"Nenner2:";
               cin>>nenn2;
            }while(nenn2==0);            
            b2.setnenner(nenn2);            
            cout<<b1.getzaehler()<<"/"<<b1.getnenner()<<" * ";
            cout<<b2.getzaehler()<<"/"<<b2.getnenner()<<" = ";
            b3=brech.mult(b1,b2);
            cout<<b3.getzaehler()<<"/"<<b3.getnenner();
            break;      
         case 'D': case 'd':
            cout<<"Zaehler1:";
            cin>>zaehl1;
            b1.setzaehler(zaehl1);
            do{
               cout<<"Nenner1:";
               cin>>nenn1;
            }while(nenn1==0);           
            b1.setnenner(nenn1);
            do{
               cout<<"Zaehler2:";
               cin>>zaehl2;
            }while(zaehl2==0);   
            b2.setzaehler(zaehl2);
            do{
               cout<<"Nenner2:";
               cin>>nenn2;
            }while(nenn2==0);            
            b2.setnenner(nenn2);            
            cout<<b1.getzaehler()<<"/"<<b1.getnenner()<<" / ";
            cout<<b2.getzaehler()<<"/"<<b2.getnenner()<<" = ";
            b3=brech.div(b1,b2);
            cout<<b3.getzaehler()<<"/"<<b3.getnenner();
            break;      
         case 'K': case 'k':
            cout<<"Zaehler:";
            cin>>zaehl1;
            b1.setzaehler(zaehl1);
            do{
               cout<<"Nenner:";
               cin>>nenn1;
            }while(nenn1==0);     
            b1.setnenner(nenn1);            
            cout<<b1.getzaehler()<<"/"<<b1.getnenner()<<" = ";
            b3=brech.kurz(b1);
            cout<<b3.getzaehler()<<"/"<<b3.getnenner();
            break;            
      }      
   }while(e!='e'&&e!='E');
   return EXIT_SUCCESS;
}
 
