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á!
Utilizamos cookies e tecnologias semelhantes de acordo com a nossa Política de Privacidade, e ao continuar navegando, você concorda com estas condições.
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.