programma c per il MCD[RISOLTO]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
ixamit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 499
Iscrizione: giovedì 14 novembre 2013, 10:16

Re: programma c per il MCD

Messaggio da ixamit »

Ecco il codice, appositamente scritto per non esser presentato

Codice: Seleziona tutto

#include <stdio.h>
#define swap_int(a,b) \
   do { unsigned int swap_tmp; \
     swap_tmp=a; \
     a=b; \
     b=swap_tmp; \
    } while(0)
unsigned int MCD (unsigned int a, unsigned int b)
{
    unsigned int t;

    if (a<b)
        swap_int(a,b); 
    for(;b;t=b,b=a%b,a=t)
        ;

    return (a);
}

int main ()
{
    unsigned int a,b;
    scanf ("%u %u",&a,&b);

    printf ("MCD(%u,%u)=%u\n",a,b,MCD(a,b));

    return 0;
}
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 »

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);

    while (x!=y)
        t=y;
        y=x%y;
        x=t;
        return y;
}
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 »

Scusa la franchezza fenics, ma il C l'hai mai studiato? :) giusto per capire con chi stiamo parlando eh, non per fare polemica :)
Lo chiedo perché da quello che posti sembra che tu stia programmando in C per la prima volta...se è così, basta dirlo che aggiustiamo il tiro dei suggerimenti :)

PS: in ogni caso, nel codice che hai postato mancano le graffe del ciclo while e il return y non ha senso, visto che sei nel main e non in una funzione
"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 »

beh effettivamente questo è il primo anno che studio il c, un po il professore che onè un granchè, non fa abbastanza ore e non ha il giusto modo di spiegare, un po io che non ho la predisposizione alla programmazione che tuttavia piace moltissimo e anche al costo di studiare il doppio (ecco perchè mi rivolgo a voi), alla ifne riuscritò ad essere un programmatore
spider-net
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 432
Iscrizione: martedì 11 maggio 2010, 17:38
Desktop: CWM
Distribuzione: FreeBSD 12.1

Re: programma c per il MCD

Messaggio da spider-net »

Se il professore non spiega bene / abbastanza puoi integrare col un libro di testo, magari quello consigliato da lui. Altrimenti online c'è tantissimo materiale.
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 »

fenics [url=http://forum.ubuntu-it.org/viewtopic.php?p=4591242#p4591242][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:beh effettivamente questo è il primo anno che studio il c, un po il professore che onè un granchè, non fa abbastanza ore e non ha il giusto modo di spiegare, un po io che non ho la predisposizione alla programmazione che tuttavia piace moltissimo e anche al costo di studiare il doppio (ecco perchè mi rivolgo a voi), alla ifne riuscritò ad essere un programmatore
Ok, allora facciamo un passo indietro :)
1) Il codice che ti ha postato ixamit l'hai capito? È volutamente scritto un po' contorto, in modo che tu non lo possa presentare come fosse tuo :) ma se ci sono cose poco chiare chiedi!
2) i link che ti abbiamo postato sono espressi in pseudo-codice. Non sono cioè un linguaggio particolare. Sei tu poi che li devi tradurre nel linguaggio che stai usando (il C in questo caso). Nell'ultimo codice che hai postato siamo abbastanza vicini alla soluzione.
1001001 ha scritto:PS: in ogni caso, nel codice che hai postato mancano le graffe del ciclo while e il return y non ha senso, visto che sei nel main e non in una funzione
Il suggerimento è chiaro? Hai provato a fare come ti ho suggerito?
"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 »

Se il professore non spiega bene / abbastanza puoi integrare col un libro di testo, magari quello consigliato da lui. Altrimenti online c'è tantissimo materiale.
Il suggerimento è chiaro? Hai provato a fare come ti ho suggerito?
ok tutto chiaro, quindi secondo quanto dettomi da voi ho implementato in questo modo (e anche lggendo sul libro):

Codice: Seleziona tutto

#include<stdio.h>

int main()
{
    int n, m, x, y, MCD;

    printf("Inserisci 2 numeri\n");
    scanf("%d%d", &n, &m);

    x=n;
    y=m;

    while(y!=x)
    {
        if(y>x) y=y-x;
        else x=x-y;
    }
    MCD=x;
    printf("MCD(%d,%d)=%d\n",n, m, MCD);

    return 0;
}
non ho usato una funzione
ixamit
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 499
Iscrizione: giovedì 14 novembre 2013, 10:16

Re: programma c per il MCD

Messaggio da ixamit »

Non voglio discutere sulla scelta algoritmica, ma solo consigliarti di scrivere gli esercizi utlizzando le funzioni. Non pretendo che tu possa comprenderne i vantaggi ora, ma abituarsi a farlo é obbligatoriamente richiesto nel percorso che stai seguendo.
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 »

fenics [url=http://forum.ubuntu-it.org/viewtopic.php?p=4591615#p4591615][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Se il professore non spiega bene / abbastanza puoi integrare col un libro di testo, magari quello consigliato da lui. Altrimenti online c'è tantissimo materiale.
Il suggerimento è chiaro? Hai provato a fare come ti ho suggerito?
ok tutto chiaro, quindi secondo quanto dettomi da voi ho implementato in questo modo (e anche lggendo sul libro):

Codice: Seleziona tutto

#include<stdio.h>

int main()
{
    int n, m, x, y, MCD;

    printf("Inserisci 2 numeri\n");
    scanf("%d%d", &n, &m);

    x=n;
    y=m;

    while(y!=x)
    {
        if(y>x) y=y-x;
        else x=x-y;
    }
    MCD=x;
    printf("MCD(%d,%d)=%d\n",n, m, MCD);

    return 0;
}
non ho usato una funzione
Ok, quello che hai fatto va bene!
Adesso, come dice ixamit, sarebbe buona cosa usare una funzione, che prenderà in ingresso i due numeri di cui calcolare il MCD, farà quello che adesso fai nel ciclo while e restituirà il valore del minimo comun divisore. Prova a farla, poi se hai problemi chiedi :)
"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 »

non so se va bene:

Codice: Seleziona tutto

#include<stdio.h>

int MCD(int a, int b)
{
    if(a==b)
        return a;
    int r;

    r=a%b;
    while(r!=0)
    {
        a=b;
        b=r;
        r=a%b;
    }
    return 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 »

Per andare bene, va bene..chiaramente questa funzione va chiamata dal 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 »

si si ho postato solo la funzione, il main richiama la funzione
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti