PDA

Visualizza la versione completa : [C] Implementazione di un menu....


andrea_NET-_DSL
21-11-2003, 17:39
Ciauz a tutti!!! :ciauz: :ciauz:

Ho scritto il seguente programma in C che dati due numeri in input calcola il massimo comun divisore(MCD) e il minimo comune multiplo(mcm).Il programma funziona correttamente....


#include <stdio.h>
int massimoComunDivisore(int n1, int n2);
int minimoComuneMultiplo(int n1, int n2);
int main(void)
{
int num1,num2;
int mcm,mcd;
printf("Inserisci due numeri interi separati da uno spazio= ");
scanf("%d%d",&num1,&num2);
mcm=minimoComuneMultiplo(num1, num2);
mcd=massimoComunDivisore(num1, num2);
printf("\nIl m.c.m. tra %d e %d e' %d\n",num1, num2, mcm);
printf("\nL'M.C.D. tra %d e %d e' %d\n",num1, num2, mcd);
return 0;
}

int minimoComuneMultiplo(int n1,int n2)
{
return n1*n2/massimoComunDivisore(n1, n2);
}
int massimoComunDivisore (int n1,int n2)

{
int resto,a,b;
a=n1;
b=n2;
while(b>0)
{
resto=a%b;
a=b;
b=resto;
}

Ma vorrei aggiungere dentro questo programma un menu del tipo seguente...che in base se scrivo M o m scriva in output il MCD o mcm,a differenza del programma che ho scritto inzialmente che li scrive sempre entrambi...



char risposta;
printf("Scrivi M per calcolare il MCD o m per calcolare il mcm");
scanf("%c",&risposta);
if (risposta=='M')
printf("Esegue la parte del mcd e scrive il risultato");
else
if (risposta=='m')
printf("esegue la parte del mcm e scrive il risultato");
else
printf("scelta errata");

ma nn so come unirlo al programma iniziale.........sareste cosi' gentile da farmi vedere il sorgente?? :bh:

grazie mille :ciauz: :ciauz:

andrea_NET-_DSL
22-11-2003, 09:34
Nessuno che mi possa aiutare??? :( :dh: :dh:

grazie :)

paolo314
22-11-2003, 14:54
Mi sono permesso di riscrivere un p il tuo programma
(la funzione del calcolo del massimo comune divisore era sbagliata e bloccava il programma)

eccotelo completo con l'aggiunta del menu:

#include <stdio.h>
int massimo(int n1, int n2);
int minimo (int n1, int n2);
int num1,num2=0;
int mcm,mcd,c;
int main()
{
do{
printf("\nCalcolo MCD e mcm:\n"
"\t\t1-Inserire i numeri:\n"
"\t\t2-Calcola MCD:\n"
"\t\t3-Calcola mcm:\n"
"\t\t0-EXIT\n");
scanf("%d",&c);
if (c<0 || c>3)
printf("numero errato\n");
else{
switch(c){
case (1):
printf("Inserisci due numeri interi: \n");
scanf("%d %d",&num1,&num2);
break;

case (2):
mcd=massimo(num1, num2);
printf("il massimo comune divisore e' %d\n",mcd);
break;

case (3):
mcm=minimo(num1, num2);
printf("il minimo comune multiplo e' %d\n",mcm);
break;

default:
printf("fine programma");
}
}
}
while(c!=0);
return 0;
}

int minimo(int n1,int n2)
{
int a;
a=n1*n2/massimo(n1, n2);
return a;
}

int massimo(int n1,int n2)
{
while (n1 != n2)
{
if (n1 > n2)
{
n1 = n1 - n2;
}
else
{
n2 = n2 - n1;
}
}
return n1;
}

Spero di averti fatto cosa gradita.
Ciao :ciauz:

andrea_NET-_DSL
22-11-2003, 15:14
grazie 10000000 ora lo provo :gren:

andrea_NET-_DSL
22-11-2003, 15:21
Originariamente inviato da paolo314

(la funzione del calcolo del massimo comune divisore era sbagliata e bloccava il programma)


sicuro??l'ho provata varie volte e nn mi sembrato mi puoi speigare??
thz ;)

LeleFT
22-11-2003, 15:25
Originariamente inviato da andrea_NET-_DSL
sicuro??l'ho provata varie volte e nn mi sembrato mi puoi speigare??
thz ;)

Infatti la funzione esatta!

andrea_NET-_DSL
22-11-2003, 15:27
Originariamente inviato da LeleFT
Infatti la funzione esatta!

infatti........ora vediamo che mi dice... :)

X PAOLO: senti potresti farmi vedere il programma che hai fatto ma usando invece dei numeri x il menu la lettera M per fare l'MCD la m per l'mcm e quindi usando una variabile char x questo scopo grazie

:ciauz:

andrea_NET-_DSL
22-11-2003, 15:49
Ragazzi scusate se rompo ma sono alle prime armi in c......allora il programma postato inizialmente da me va bene e calcola senza problemi sia il massimo comun divisore che il minimo comune multiplo,come confermato ;) , il mio prob che ci vorrei mettere un menu,che ho scritto a a parte sempre postato all'inizio, che se scrivo M mi scrive il massimo comun divisore mentre se scrivo m il minimo comune multiplo, per far questo ho usato una var char.SOLO CHE NN SO UNIRLI.....CHI SAREBBE COSI' GENTILE DA FARMI VEDERE COME SI FA??AH SENZA USARE il CASE OF che da quanto ho studiato nn puoi usare la scelta con caratteri,come devo fare io M o m, ma solo con numeri,1 2...,

GRAZIE
e aiutatemi :bh: :dh:

:)

$$$
22-11-2003, 15:54
/* ... */

char c;

c = getch();
if ( c == 'M' )
/* massimo */ ;
else if ( c == 'm' )
/* minimo */ ;
else
/* qualcos altro! */ ;

andrea_NET-_DSL
22-11-2003, 16:12
Originariamente inviato da $$$
/* ... */

char c;

c = getch();
if ( c == 'M' )
/* massimo */ ;
else if ( c == 'm' )
/* minimo */ ;
else
/* qualcos altro! */ ;

si questo lo so ho pure scritto sul primo post in modo + dettagliato che nn so come unirlo al programma principale che ho sempre postato all'inizio........... :confused:

Loading