Thiago Balthazar Postado Maio 27, 2011 Denunciar Share Postado Maio 27, 2011 Fiz esse exercicio, mas ele para na hora de receber o sinal de operação.Embaixo tah o enunciado do exercicio e como ficou quando tentei fazer.:wacko:24. Escreva um algoritmo que funcione como uma máquina de calcular operando da seguinte maneira:a) primeiro deve pedir os dois operandos;B) logo a seguir deve pedir o tipo de operação (+, -, * ou /)c) após a escolha do operador, deve apresentar o resultado indicando que tipo de operação foi executado. Ex: a + b = 6;d) se o operador não for um dos especificados, mensagem deve informar o fato.#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { float n1,n2, total; char sinal[1]; printf("Digite o primeiro numero: "); scanf("%f",&n1); printf("Digite o segundo numero: "); scanf("%f",&n2); printf("Digite o tipo de operacao: "); gets(sinal); if(strcmp(sinal,"+")==0) { total = n1 + n2; printf("%i + %i = %i",n1,n2,total); } else if(strcmp(sinal,"-")==0) { total = n1 - n2; printf("%i - %i = %i",n1,n2,total); } else if(strcmp(sinal,"/")==0) { total = n1 / n2; printf("%i / %i = %i",n1,n2,total); } else if(strcmp(sinal,"*")==0) { total = n1 * n2; printf("%i * %i = %i",n1,n2,total); } system("PAUSE"); return 0; }Se alguém pode me dizer o que eu to fazendo de errado eu agedeceria.Abraços a todos e tenham um Bom dia !! :ninja: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 CPP Postado Maio 27, 2011 Denunciar Share Postado Maio 27, 2011 Olávocê declarou sinal com apenas um byte, mas a função gets coloca o terminador '' no final da string, ou seja, seu programa esta corrompendo a memoria.Muda pra char sinal[5] que resolve seu problema.Abs Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Andrey_C Postado Junho 10, 2011 Denunciar Share Postado Junho 10, 2011 sei um jeito tambem#include<stdio.h>#include<string.h>#include<math.h>int main(void){ float A,B,R; char S[12]; int RESP=1; while(RESP==1){ scanf("%f", &A);scanf("%f", &B); scanf("%s", &S); if(S[0]!='+' && S[0]=='-' && S[0]=='*' &&S[0]=='/'){printf("\n\nSinal não reconhecido\n\n");RESP=1;} if(S[0]=='+'){ R = A + B; } if(S[0]=='-'){ R = A - B; } if(S[0]=='*'){ R = A * B; } if(S[0]=='/'){ if(A<=0||B<=0){ printf("Erro na divisao.\n\n"); }else{ R = A / B; printf("\n\n\n %f %s %f = %f\n\n\n\n\n", A,S,B,R); } } if((S[0]=='+')||(S[0]=='-')||(S[0]=='*')){ system("cls"); printf("%f\n%s\n%f\n=\n%f\n\n\n", A,S,B,R); } }return 0;} Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Thiago Balthazar
Fiz esse exercicio, mas ele para na hora de receber o sinal de operação.
Embaixo tah o enunciado do exercicio e como ficou quando tentei fazer.:wacko:
24. Escreva um algoritmo que funcione como uma máquina de calcular operando da seguinte maneira:
a) primeiro deve pedir os dois operandos;
B) logo a seguir deve pedir o tipo de operação (+, -, * ou /)
c) após a escolha do operador, deve apresentar o resultado indicando que tipo de operação foi executado.
Ex: a + b = 6;
d) se o operador não for um dos especificados, mensagem deve informar o fato.
Se alguém pode me dizer o que eu to fazendo de errado eu agedeceria.
Abraços a todos e tenham um Bom dia !! :ninja:
Link para o comentário
Compartilhar em outros sites
2 respostass 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.