Olá! Estou fazendo um exercício que pede para montar um programa com funções para operações básicas. O padrão de entrada é:
"1.5 1 + 2 * representa ((1.5 + 1) * 2)"
"Entrada: Uma sequência de operandos (números) e operadores (sinais ‘+’, ‘-‘, ‘/’, ‘*’)
separados por um espaço ‘ ‘ representando uma operação composta a ser resolvida.
Considere que sempre haverá pelo menos uma operação básica para ser realizada (i.e. dois
operandos e um operador)."
Meu programa está logo abaixo, estou tendo problemas para ele parar após ler o último operador, pois o programa fica esperando outro float depois disso. Se alguém puder ajudar, agradeço desde já!
#include <stdio.h>
float Soma(float num1, float num2);
float Subtracao(float num1, float num2);
float Divisao(float num1, float num2);
float Multiplicacao(float num1, float num2);
float Operacao(float num1, float num2, char c);
int main(){
float num1, num2, final=0;
char c;
scanf(" %f %f %c", &num1, &num2, &c);
float result;
result = Operacao(num1, num2, c);
num1 = result;
final = result;
while(((scanf(" %f", &num2))!=0)){
if(scanf(" %c", &c)!=0){
result = Operacao(num1, num2, c);
num1 = result;
final = result;
}
}
printf("%.2f", final);
return 0;
}
float Soma(float num1, float num2){
float a = num1 + num2;
return a;
}
float Subtracao(float num1, float num2){
float a = num1 - num2;
return a;
}
float Divisao(float num1, float num2){
float a = num1/num2;
return a;
}
float Multiplicacao(float num1, float num2){
float a = num1*num2;
return a;
}
float Operacao(float num1, float num2, char c){
float result;
if(c=='+'){
result = Soma(num1, num2);
}
if(c=='-'){
result = Subtracao(num1, num1);
}
if(c=='/'){
result = Divisao(num1, num1);
}
if(c=='*'){
result = Multiplicacao(num1, num2);
}
return result;
}