Ciao,
ho sistemato il codice solo che mcm mi da come risultato sempre il numero maggiore e non il numero giusto.
Vi posto anche il codice completocodice:int mcm(int a, int b) { int mcm1=0, max=0, min=0, i=1; if(a>=b) { max=a; min=b; mcm1=max; } else { max=b; min=a; mcm1=max; } while((max*i)%min==0) { mcm1=mcm1+max; i++; } return mcm1; }
codice:#include <stdio.h> int potenza(int,int); int MCD(int,int); int mcm(int,int); int main() { int a, b,scelta; do { printf("Inserisci il primo termine (intero) maggiore o uguale a zero:"); scanf("%d", &a); printf("Inserisci il secondo termine (intero) maggiore o uguale a zero:"); scanf("%d", &b); } while(a<0 && b<0); printf("Cosa vuoi vedere?\n"); printf(" 1) a^b\n"); printf(" 2) b^a\n"); printf(" 3) MCD tra 'a' e 'b'\n"); printf(" 4) mcm tra 'a' e 'b'\n"); printf("Scelta:"); scanf("%d", &scelta); switch(scelta) { case 1: printf("%d elevato alla %d da come risultato: %d\n",a,b,potenza(a,b)); break; case 2: printf("%d elevato alla %d da come risultato: %d\n",b,a,potenza(b,a)); break; case 3: printf("Il MCD tra %d e %d e\': %d\n",a,b,MCD(a,b)); break; default: printf("Il mcm tra %d e %d e\': %d\n",a,b,mcm(a,b)); } system("pause"); } //Implementazione della funzione potenza int potenza(int base,int esp) { int ele=1; int i=0; for(i=0; i<esp; i++) ele=ele*base; return ele; } //Implementazione della funzione MCD con il metodo di Euclide int MCD(int a, int b) { int MCD1=0, rest=0; while(b>0) { rest=a%b; //operazione per trovare il resto di variabili intere a=b; //scambio le variabili b=rest; } MCD1=a; return MCD1; } //Implementazione della funzione mcm int mcm(int a, int b) { int mcm1=0, max=0, min=0, i=1; if(a>=b) { max=a; min=b; mcm1=max; } else { max=b; min=a; mcm1=max; } while((max*i)%min==0) { mcm1=mcm1+max; i++; } return mcm1; }
Ciao e grazie mille

Rispondi quotando