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á!
Pergunta
dyam96
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;
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.