Ir para conteúdo
Fórum Script Brasil
  • 0

Exercicio que não consigo resolver !


Thiago Balthazar

Pergunta

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:

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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;

}

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...