Cerca nel blog

mercoledì 22 ottobre 2014

Compito a casa operazioni con frazioni

#include<iostream>
using namespace std;
class Frazione{
            public:
                Frazione();
                ~Frazione();
                Frazione(int in);
                void visualizza();
                void aggiorna();
                int* num;
                int* den;
            private:
                int in;
            };
class Calcolatrice{
                public:
                    void somma(Frazione* b, int* dim);
                    void sottrazione(Frazione* b, int* dim);
                    void moltiplicazione(Frazione* b, int* dim);
                    void divisione(Frazione* b, int* dim);
                    void semplificazione(Frazione* b);
                  };
void Calcolatrice::semplificazione(Frazione *b)
{

    int* i;
    i= new int;
    int* dim;
    dim=new int;
    if(*b->num<*b->den)
    {
        *dim=*b->den;
    }
    else
    {
        *dim=*b->num;
    }
    for(*i=1;*i<*dim;*i=*i+1)
    {
        if((*b->num%*i==0)&&(*b->den%*i==0))
        {
            *b->num=*b->num/ *i;
            *b->den=*b->den/ *i;
        }
    }
    cout<<endl<<"frazione semplificata= "<<*b->num<<"/"<<*b->den;
}
void Calcolatrice::divisione(Frazione* b, int* dim)
{
    int i;
    i=0;
    Frazione* ris;
    ris=new Frazione(i);
    *ris->num=(*b[0].num * *b[1].den);
    *ris->den=(*b[0].den * *b[1].den);
    for(i=2;i<*dim;i++)
    {
        *ris->num=(*ris->num * *b[i].den);
        *ris->den=(*ris->den * *b[i].num);
    }
    cout<<"il risultato è="<<*ris->num<<"/"<<*ris->den;
    semplificazione(ris);
    delete ris;
}
void Calcolatrice::moltiplicazione(Frazione* b, int* dim)
{
    int i;
    i=0;
    Frazione* ris;
    ris=new Frazione(i);
    *ris->num=(*b[0].num * *b[1].num);
    *ris->den=(*b[0].den * *b[1].den);
    for(i=2;i<*dim;i++)
    {
        *ris->num=(*b[i].num * *ris->num);
        *ris->den=(*b[i].den * *ris->den);
    }
    cout<<"il risultato è="<<*ris->num<<"/"<<*ris->den;
    semplificazione(ris);
    delete ris;
}
void Calcolatrice:: sottrazione(Frazione* b, int* dim)
{
    int i;
    i=0;
    Frazione *ris;
    ris=new Frazione(i);
    //cout<<*dim<<b;
    *ris->num=((*b[0].num * *b[1].den)-(*b[1].num * *b[0].den));
    *ris->den=(*b[0].den * *b[1].den);
    for(i=2;i<*dim;i++)
    {
       *ris->num=(*ris->num * *b[i].den)-(*b[i].num * *ris->den);
       *ris->den=(*ris->den * *b[i].den);
    }
    cout<<"il risultato è="<<*ris->num<<"/"<<*ris->den;
    semplificazione(ris);
    delete ris;
}
Frazione::~Frazione()
{
    delete num;
    delete den;
}
void Calcolatrice::somma(Frazione* b, int* dim)
{
    int i;
    i=0;
    Frazione *ris;
    ris=new Frazione(i);
    //cout<<*dim<<b;
    *ris->num=((*b[0].num * *b[1].den)+(*b[1].num * *b[0].den));
    *ris->den=(*b[0].den * *b[1].den);
    for(i=2;i<*dim;i++)
    {
       *ris->num=(*ris->num * *b[i].den)+(*b[i].num * *ris->den);
       *ris->den=(*ris->den * *b[i].den);
    }
    cout<<"il risultato è="<<*ris->num<<"/"<<*ris->den;
    semplificazione(ris);
    delete ris;
    //return 0;
}
Frazione::Frazione(int in)
{
    num=new int;
    den=new int;
    *num=in;
    *den=in;
}
Frazione::Frazione ()
{
    num=new int;
    den=new int;
    cout<<"inserire il numeratore: ";
    cin>>*num;
    cout<<"inserire il denoinatore: ";
    cin>>*den;
}
void Frazione::visualizza()
{
    char*scelta;
    scelta=new char;
    cout<<"la frazione inserita è: "<<*num<<"/"<<*den<<" ";
   /* cout<<"si vuole modificare un elemento della frazione?";
    cin>>*scelta;
    if(*scelta=='s')
        aggiorna();*/
}
void Frazione::aggiorna()
{
    char*scelta;
    char* c;
    c=new char;
    scelta=new char;
    cout<<endl<<"si desidera cambiare un elemento?s-n";
    cin>>*c;
    while(*c=='s')
    {
    cout<<"Si desidera cambiare il numeratore(n) o il denominatore (d)? ";
    cin>>*scelta;
    if(*scelta=='n')
    {
        cout<<"inserisci il numeratore: ";
        cin>>*num;
    }
    else
    {
        cout<<"inserisci il denominatore: ";
        cin>>*den;
    }
    visualizza();
    cout<<endl<<"si desidera cambiare un altro elemento?s-n ";
    cin>>*c;
    }
    *c='n';
    delete scelta;
    delete c;
}
main()
{
    int* dim;
    int *i;
    char *oper;
    oper=new char;
    dim=new int;
    i=new int;
    cout<<"quante frazioni vuoi inserire?";
    cin>>*dim;
    Frazione* a;
    a=new Frazione[*dim];
    //cout<<endl<<a;
    for(*i=0;*i<*dim;*i=*i+1)
    {
        a[*i].visualizza();
        a[*i].aggiorna();
    }
    cout<<"quale operazione si vuole eseguire?(+ - x /)";
    cin>>*oper;
    Calcolatrice* calc;
    calc= new Calcolatrice;
    switch(*oper)
    {
        case '+': calc->somma( a, dim);
                    break;
        case '-': calc->sottrazione(a, dim);
                    break;
        case 'x': calc->moltiplicazione(a, dim);
                    break;
        case '/': calc->divisione(a, dim);
                    break;
    }
    //cout<<"fine programma";
    delete []  a;
   // a.visualizza();
    //a.aggiorna();
}

Nessun commento:

Posta un commento