Ciao,
ho sistemato il codice solo che mcm mi da come risultato sempre il numero maggiore e non il numero giusto.
codice:
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;
}
Vi posto anche il codice completo
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