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