Ciao,
devo fare un programma che inserit 2 numeri 'a' e 'b' faccia a seconda della scelta dell'utente:
1)a^b
2)b^a
3)MCD tra 'a' e 'b'
4)mcm tra 'a' e 'b'
Solo che riscontro 2 problemi in fase di compilazione:
1)Nella funzione 'potenza' la variabile dello switch 'scelta' viene data come errore in quanto no ha valori ma, quindi come faccio a far ritornare i valori a 'scelta'?
2)Nella funzione MCD l'operazione
mi viene data errata e scrive:
invalid operands to binary %
quindi cosa devo modificare al fine di far spaire l'errore?
codice:
#include <stdio.h>
float potenza(float a,float b);
float MCD(float a,float b);
float mcm(float a,float b);
int main()
{
float a, b; //Variabili globali
int scelta;
do
{
printf("Inserisci il primo termine maggiore o uguale a zero:");
scanf("%f", &a);
printf("Inserisci il secondo termine maggiore o uguale a zero:");
scanf("%f", &b);
}
while(a<0 && b<0);
printf("Cosa vuoi vedere?");
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");
scanf("%d", &scelta);
switch(scelta)
{
case 1:
printf("%4.1f elevato alla %4.1f da come risultato: %4.1f",a,b,potenza(a,b));
break;
case 2:
printf("%4.1f elevato alla %4.1f da come risultato: %4.1f",b,a,potenza(a,b));
break;
case 3:
printf("Il MCD tra %4.1f e %4.1f e\': %4.1f ",a,b,MCD(a,b));
break;
default:
printf("Il mcm tra %4.1f e %4.1f e\': %4.1f ",a,b,mcm(a,b));
}
system("pause");
}
//Implementazione della funzione potenza
float potenza(float a,float b)
{
float c=0,ele=0;
int i=0;
switch (scelta)
{
case 1:
if(b==0)
ele=1;
else
{
for(i=0; i<b; i++)
ele=a*a;
}
break;
default:
if(a==0)
ele=1;
else
{
c=a;
a=b;
b=c;
for(i=0; i<b; i++)
ele=a*a;
}
}
return ele;
}
//Implementazione della funzione MCD con il metodo di Euclide
float MCD(float a, float b)
{
float MCD1=0, rest=0;
while(b>0)
{
rest=a%b; //operazione per trovare il resto
a=b; //scambio le variabili
b=rest;
}
MCD1=a;
return MCD1;
}
//Implementazione della funzione mcm
float mcm(float a, float b)
{
float mcm1;
mcm1=a*b;
return mcm1;
}
P.S. Se ci sono degli altri errori fatemelo sapere.
Ciao e grazie in anticipo