Pagina 2 di 2

Re: programma c per il MCD

Inviato: venerdì 30 maggio 2014, 13:22
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;
}

Re: programma c per il MCD

Inviato: venerdì 30 maggio 2014, 13:25
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;
}

Re: programma c per il MCD

Inviato: venerdì 30 maggio 2014, 13:40
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

Re: programma c per il MCD

Inviato: venerdì 30 maggio 2014, 15:40
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

Re: programma c per il MCD

Inviato: venerdì 30 maggio 2014, 19:10
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.

Re: programma c per il MCD

Inviato: venerdì 30 maggio 2014, 19:32
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?

Re: programma c per il MCD

Inviato: sabato 31 maggio 2014, 10:30
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

Re: programma c per il MCD

Inviato: sabato 31 maggio 2014, 14:45
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.

Re: programma c per il MCD

Inviato: sabato 31 maggio 2014, 15:34
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 :)

Re: programma c per il MCD

Inviato: sabato 31 maggio 2014, 16:20
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;
}

Re: programma c per il MCD

Inviato: domenica 1 giugno 2014, 17:58
da 1001001
Per andare bene, va bene..chiaramente questa funzione va chiamata dal main ;)

Re: programma c per il MCD

Inviato: lunedì 2 giugno 2014, 12:43
da fenics
si si ho postato solo la funzione, il main richiama la funzione