C plus plus - Impara a programmare in C++

Somma frazioni

programma che somma, semplifica e risolve due frazioni utilizzando mcm ed MCD

« Older   Newer »
 
  Share  
.
  1. Cyberfrog#94
     
    .

    User deleted


    CODICE
    //by Andrea Gobetti

    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>

    int main()
    { int n1;//numeratore1
    int n2;//numeratore2
    int d1;//denominatore1
    int d2;//denominatore2
    int ris;//risultato nel caso in cui la frazione sia ridolvibile
    int Md2;//memoria del denominatore2
    int n3;//numeratore3, il numeratore del risultato
    int d3;//denominatore3, il denominatore del risultato
    int rd3;//resto della divisione tra denominatore3 e MCD
    int rn3;//resto della divisione tra numeratore3 e MCD
    int md3;//memoria del denominatore3
    int mn3;//memoria del numeratore3
    int mcd;//mcd tra denominatore3 e numeratore3
    int d4;//denominatore4 (denominatore semplificato)
    int n4;//numeratore4 (numeratore semplificato)

    //inserimento numeratori e denominatori
    printf("inserire il numeratore della prima frazione: ");
    scanf("%d",&n1);
    printf("inserire il denominatore della prima frazione: ");
    scanf("%d",&d1);
    printf("inserire il numeratore della seconda frazione: ");
    scanf("%d",&n2);
    printf("inserire il denominatore della seconda frazione: ");
    scanf("%d",&d2);
    //verifico che ai denominatori non ci siano zeri
    if(d1==0 || d2==0)
    {

    while(d1==0)
    {
    printf("\nimpossibile dividere per 0\n");
    printf("reinserire il denominatore della prima frazione: ");
    scanf("%d",&d1);
    }

    while(d2==0)
    {
    printf("\nimpossibile dividere per 0\n");
    printf("reinserire il denominatore della seconda frazione: ");
    scanf("%d",&d2);
    }

    }

    //calcolo il denominatore facendo l'mcm dei denominatori
    d3=d1;
    Md2=d2;

    while(d3!=Md2)
    {if(d3>Md2)
    {Md2=Md2+d2;
    }
    else
    {d3=d3+d1;
    }
    }
    //calcolo il numeratore
    n3=(d3/d1*n1)+(d3/d2*n2);
    //se posso risolvo la frazione
    if(n3%d3==0)
    {
    ris=n3/d3;
    printf("\n %d\t %d\t %d\n----- + ----- = ------ = %d\n %d\t %d\t %d\n\n", n1, n2, n3, ris, d1, d2, d3);
    }
    //altrimenti calcolo l'MCD tra numeratore e denominatore per verificare se la frazione può essere semplificata
    else
    {
    md3=d3;
    mn3=n3;
    if(md3>mn3)
    {mcd=d3;
    }
    if(md3<=mn3)
    {mcd=mn3;
    }
    rn3=1;
    rd3=1;
    while(rn3!=0 || rd3!=0)
    {
    rn3=n3%­mcd;
    if(rn3!=0)
    {mcd=mcd-1;
    }
    if(rn3==0)
    {rd3=d3%­mcd;
    if(rd3!=0)
    {mcd=mcd-1;
    }
    }
    }
    //se l'MCD ottenuto è diverso da 1 semplifico la frazione
    if(mcd!=1)
    {n4=n3/mcd;
    d4=d3/mcd;
    printf("\n %d\t %d\t %d\t %d\n----- + ----- = ------ = -----\n %d\t %d\t %d\t %d\n\n", n1, n2, n3, n4, d1, d2, d3, d4);
    }
    //altrimenti la stampo non semplificata
    else
    printf("\n %d\t %d\t %d\n----- + ----- = ------\n %d\t %d\t %d\n\n", n1, n2, n3, d1, d2, d3);
    }
    system("PAUSE");
    return 0;
    }



    OUTPUT:



    Edited by Cyberfrog#94 - 28/11/2010, 18:25
     
    Top
    .
  2. Vincenzo Vince Ingarao
     
    .

    User deleted


    Ma l'hai messo online senza compilarlo e farlo girare? Ma non era meglio verificare prima che funzionasse??????
     
    Top
    .
  3.  
    .
    Avatar

    Junior Member

    Group
    Member
    Posts
    1

    Status
    Offline
    CITAZIONE (Vincenzo Vince Ingarao @ 16/11/2021, 12:39) 
    Ma l'hai messo online senza compilarlo e farlo girare? Ma non era meglio verificare prima che funzionasse??????

    Certo che l'avevo compilato e certo che funzionava, magari è cambiato qualcosa visto che l'articolo è di 11 anni fa? :D

    Allego screenshot dell'epoca per il giudizio della Corte :D

    67446_1209574616952_1964785_n

    Oltretutto questo forum è un progetto abbandonato fatto da ragazzini di 15 anni, il livello del codice nel tempo è un po' migliorato :P
     
    Top
    .
2 replies since 26/11/2010, 17:31   1244 views
  Share  
.