Aiuto! mcd...

di il
1 risposte

Aiuto! mcd...

Ho visto che non è la prima discussione su questo punto(massimo comun divisore), ma sonodisperata perchè non riesco a capire dov'è l'errore...sono al primo anno di informatica e sicuramente troverete sciocco il mio errore, ma trovatelo per favore!
devo svolgerlo con l'uso della function e senza ricorsività...se necessitate di commenti, fatemelo sapere...



#include <stdio.h>
int mcd(int a, int b);
main ()
{
int a,b,maxdiv;
printf("Inserire valore di a: ");
scanf("%d",&a);
printf("Inserire valore di b: ");
scanf("%d",&b);
mcd(&a,&b);
printf("Il massimo comun divisore e': \n",maxdiv);
system("PAUSE");
}

int mcd(int a, int b)
{
int maxdiv;

for(;a!=b;)
{
if(a>b)
{ if((a%b)==0)
maxdiv=b;
else
(a%b)==b;
b=a;
}
else
{ if((b%a)==0)
maxdiv=a;
else
(b%a)==a;
a=b;
}
}
}

1 Risposte

  • Re: Aiuto! mcd...

    Ciao, non so quale algoritmo abbiate utilizzato a lezione,da quello scritto da te non si capisce, io nell'esempio ho usato quello di euclide (mcd tra due numeri).
    Al di la dell'errore sulla logica dell'algoritmo ho visto che ci sono diversi errori di logica/sintassi del linguaggio C. Ti consiglio di rivedertelo, io potrei darti anche una mano... ma non so fino a che punto.

    #include <stdio.h>
    #include <stdlib.h>

    int mcd(int a, int b);
    int main ()
    {
    int a,b,maxdiv;

    printf("Inserire valore di a: ");
    scanf("%d",&a);
    printf("Inserire valore di b: ");
    scanf("%d",&b);
    maxdiv = mcd(a,b);
    printf("Il massimo comun divisore e': %d\n",maxdiv);
    system("PAUSE");
    }

    int mcd(int a, int b)
    {
    while (a>0)
    {
    if(a==b || a==0 || b == 0)
    return a;
    if(a>b)
    a -=b;
    else
    {
    int tmp = b;
    b = a;
    a = tmp;
    }
    }
    return b;
    }

    ti posto un link dove viene spiegato questo argomento (mcd, con algoritmo di euclide),
    Ciao
Devi accedere o registrarti per scrivere nel forum
1 risposte