Bom galera eu estou desenvolvendo uma simples calculadora, com as seguintes operações: adição, subtração, multiplicação, divisão, potência e resto da divisão. Esta deve usar diversas funções para resolver o problema e é nesta parte que que está ocorrendo erro o qual não consigo achar, não ocorre relação entre as funções, o erro deve estar na parte do comando switch e nas funções.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float a,b;
float soma();
float dif();
float mult();
float divisao();
float resto();
float pot();
int main(void)
{
while(1)
{
float num1, num2, resultado;
char operador;
printf("####### Calculadora #######\n");
printf("_______ Operadores ________\n");
printf("Soma\t\t\t[+]\n");
printf("Diferença\t\t[-]\n");
printf("Multiplicação\t\t[*]\n");
printf("Divisão\t\t\t[/]\n");
printf("Resto da divisão\t[%%]\n");
printf("Potência\t\t[^]\n");
printf("Para sair digite\t[000]\n");
printf("_____________________________\n");
printf("Sintaxe:\n[numero][operador][numero]\n\n");
scanf("%f%c%f",&num1,&operador,&num2);
switch(operador)
{
case '+':
resultado=soma(num1,num2);
break;
case '-':
resultado=dif(num1,num2);
break;
case '*':
resultado=mult(num1,num2);
break;
case '/':
while(num2=0)
{
printf("Não há diviso por zero\n");
printf("Insira o valor\n");
scanf("%f", num2);
}
resultado=divisao(num1,num2);
break;
case '%':
resultado=resto(num1,num2);
break;
case '^':
resultado=pot(num1,num2);
break;
case '0':
if (num1==0 && num2==0)
system("exit");
else
printf("Operador inválido");
break;
default:
printf("Operador inválido\n");
break;
}
printf("=%f", resultado);
}
return 0;
}
float soma(a,b)
{
float r;
r=a+b;
return r;
}
float dif(a,b)
{
float r;
r=a-b;
return r;
}
float mult(a,b)
{
float r;
r=a*b;
return r;
}
float divisao(a,b)
{
float r;
r=a/b;
return r;
}
float resto(a,b)
{
float r;
r=(int)a%(int)b;
return r;
}
float pot(a,b)
{
float r;
r=pow(a,b);
return r;
}