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
codice:
rest=a%b;
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