programma c per il MCD[RISOLTO]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
fenics
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 640
Iscrizione: giovedì 20 agosto 2009, 10:09
Contatti:

programma c per il MCD[RISOLTO]

Messaggio da fenics »

Salve ragazzi, ho fatto questo compito da presentare alla classe che calcola in C il MCD tra 2 numeri. Aiutatemi a fare bella figura per favore :popopo:
Il programma da me implementato è il seguente, ed effettivamente sembra che porta, anche se c'è qualcosa che non mi convince.

Codice: Seleziona tutto

#include<stdio.h>

int main()
{
    int x, y, MCD, c=0;

    printf("Inserisci il primo numero\n");
    scanf("%d", &x);
    printf("Inserisci il secondo numero\n");
    scanf("%d", &y);

    if(x%y==0)
    {
        MCD=x;
    }
    else if(y%x==0)
    {
        MCD=y;
    }
    printf("%d", MCD);
        return 0;
}
potete provarlo se volete.
Ultima modifica di fenics il lunedì 2 giugno 2014, 12:44, modificato 1 volta in totale.
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: programma c per il MCD

Messaggio da 1001001 »

Ciao!
Non ho capito quale sia la tua domanda, ma

Codice: Seleziona tutto

mattia@replicant:Scrivania$ gcc mcd.c -o mcd
mattia@replicant:Scrivania$ ./mcd 
Inserisci il primo numero
12
Inserisci il secondo numero
16
mcd = 0
direi che c'è qualcosa che non va ;)
"I find your lack of faith disturbing."
Avatar utente
fenics
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 640
Iscrizione: giovedì 20 agosto 2009, 10:09
Contatti:

Re: programma c per il MCD

Messaggio da fenics »

a me porta 2 e non 0
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: programma c per il MCD

Messaggio da 1001001 »

Che è comunque sbagliato, visto che dovrebbe essere 4 :)

Il motivo della differenza fra il mio risultato e il tuo è che usi la variabile MCD senza averla inizializzata, quindi non sai che valore ha finché non gliene assegni uno (e nel caso di 16 e 12 non entra mai nè nell'if nè nell'else, quindi a MCD non viene mai dato un valore) anche se lo standard prevederebbe che il compilatore inizializzi a 0 di default gli int dichiarati nel main
"I find your lack of faith disturbing."
Avatar utente
fenics
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 640
Iscrizione: giovedì 20 agosto 2009, 10:09
Contatti:

Re: programma c per il MCD

Messaggio da fenics »

giusto, e allora?? secondo il modello di euclide??
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: programma c per il MCD

Messaggio da 1001001 »

Sì, quello è uno degli algoritmi più usati, perché è facile e veloce...ma il tuo codice non usa l'algoritmo di Euclide :) quello che hai scritto controlla semplicemente se uno dei due numeri è divisore dell'altro
"I find your lack of faith disturbing."
Avatar utente
fenics
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 640
Iscrizione: giovedì 20 agosto 2009, 10:09
Contatti:

Re: programma c per il MCD

Messaggio da fenics »

aspetta aspetta, ci sono quasi, lo sto facendo, poi dimmi dove ho sbagliato
Avatar utente
fenics
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 640
Iscrizione: giovedì 20 agosto 2009, 10:09
Contatti:

Re: programma c per il MCD

Messaggio da fenics »

no, non ce la faccio a risolvere con il metodo di euclide, ditemi voi come si fa
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: programma c per il MCD

Messaggio da 1001001 »

Cosa vuol dire che non ce la fai? Quali sono i problemi che incontri?
"I find your lack of faith disturbing."
ixamit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 499
Iscrizione: giovedì 14 novembre 2013, 10:16

Re: programma c per il MCD

Messaggio da ixamit »

Avatar utente
fenics
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 640
Iscrizione: giovedì 20 agosto 2009, 10:09
Contatti:

Re: programma c per il MCD

Messaggio da fenics »

non so quale sia il metodo di euclide, ho visto su internet e ho capito qual'è il petodo con carta e penna. Ma non so metterlo in scrittura come cdice
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: programma c per il MCD

Messaggio da 1001001 »

Oltre al link di ixamit, guarda anche qua: http://en.wikipedia.org/wiki/Euclidean_ ... mentations
"I find your lack of faith disturbing."
ixamit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 499
Iscrizione: giovedì 14 novembre 2013, 10:16

Re: programma c per il MCD

Messaggio da ixamit »

Avatar utente
fenics
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 640
Iscrizione: giovedì 20 agosto 2009, 10:09
Contatti:

Re: programma c per il MCD

Messaggio da fenics »

Che vuol dire a=|a|, b=|b|
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: programma c per il MCD

Messaggio da 1001001 »

E meno male, se no ci sarebbe un problema! :D l'ho messo solo perché era ancora più esplicito :)

fenics ha scritto:Che vuol dire a=|a|, b=|b|
Di prendere i valori assoluti dei due numeri. Il massimo comun divisore è lo stesso sia che tu prenda a e b, che |a| e |b| (e anche |a| e b oppure a e |b|), ma l'algoritmo funziona solo se entrambi i numeri sono positivi
"I find your lack of faith disturbing."
ixamit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 499
Iscrizione: giovedì 14 novembre 2013, 10:16

Re: programma c per il MCD

Messaggio da ixamit »

1001001 ha scritto: E meno male, se no ci sarebbe un problema! :D l'ho messo solo perché era ancora più esplicito :)
Si, ho capito :D
volevo solo far notare che e' identico anche nella definizione dei nomi delle variabili
:ciao:
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: programma c per il MCD

Messaggio da 1001001 »

ixamit [url=http://forum.ubuntu-it.org/viewtopic.php?p=4591146#p4591146][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: Si, ho capito :D
volevo solo far notare che e' identico anche nella definizione dei nomi delle variabili
:ciao:
Ah ok, avevo capito male, scusami :)
"I find your lack of faith disturbing."
Avatar utente
fenics
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 640
Iscrizione: giovedì 20 agosto 2009, 10:09
Contatti:

Re: programma c per il MCD

Messaggio da fenics »

quindi questa parte del codice va bene??

Codice: Seleziona tutto

#include<stdio.h>

int main()
{
    int x, y, t, MCD;

    printf("Inserisci il primo numero\n");
    scanf("%d", &x);
    printf("Inserisci il secondo numero\n");
    scanf("%d", &y);

        if(x>y)
        {
            while(y=!0)
            {
                t=y;
                y=x mod y;
                x=t;
            }
            MCD(x,y)=x;
        }
}
a me da un errore su questa riga y=x mod y; dice expeted ; before mod. Anche se non vedo l'errore
1001001
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1506
Iscrizione: mercoledì 22 dicembre 2010, 18:09
Desktop: Unity
Distribuzione: Ubuntu 14.04.1 LTS 64bit
Località: Verona

Re: programma c per il MCD

Messaggio da 1001001 »

Il modulo in C si fa con "%", non "mod". Il simbolo di diverso è "!=" non "=!". MCD (x,y) non ha senso, MCD è una variabile
"I find your lack of faith disturbing."
Avatar utente
fenics
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 640
Iscrizione: giovedì 20 agosto 2009, 10:09
Contatti:

Re: programma c per il MCD

Messaggio da fenics »

boh ho fatto esattamente come riportato nel link che avete postato cioè così, ma mi da questa volta l'erruroe su function

Codice: Seleziona tutto

#include<stdio.h>

int main()
{
    int x, y, t, MCD;

    printf("Inserisci il primo numero\n");
    scanf("%d", &x);
    printf("Inserisci il secondo numero\n");
    scanf("%d", &y);

    function gcd(x, y)
    while (x!=y)
        t:=y;
        y:=x%y;
        x:=t;
        return y
}
mi chiedevo se non è meglio che mi postate il codice con i relativi commenti così che io possa studiare su quello
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti