Ir ao conteúdo
  • Cadastre-se

C Como faço pra atribuir o + para soma e - para subtração nessa calculadora em C?


Endmmans
Ir à solução Resolvido por Robson.suporte,

Posts recomendados

#include <stdio.h>
#include <stdlib.h>

main (void){
	float valor1, valor2, resultado;
  char sinal;
	
	printf("Qual o primeiro valor? ");
	scanf("%f", &valor1);

	printf("Qual o segundo valor? ");
	scanf("%f", &valor2);

	printf("Qual a operação desejada? (+ para somar, - para subtrair)");
	scanf("%c", &sinal);

  if (sinal == +){
    resultado = valor1 + valor2;
  }
  else if (sinal == -){
    resultado = valor1 - valor2;
  }
  printf("O resultado é %f", resultado);


  return 0;

}

Comecei a ver C hoje, e não estou conseguindo atribuir os valores + e - à variável ''sinal''. Se eu coloco ''int'' ao invés de char pra variável, e eu colocar pra digitar por exemplo 1 para somar, aí funciona normalmente. Como faço pra atribuir o + para soma e - para subtração?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução
48 minutos atrás, Endmmans disse:
if (sinal == +){
    resultado = valor1 + valor2;
  }
  else if (sinal == -){
    resultado = valor1 - valor2;

Coloca aspas simples em volta do caractere de soma e subtração '+' e '-'

if (sinal == '+') {

     resultado = valor1 + valor2;

    }

   else if (sinal == '-')

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

@Endmmans

Boa Dia

 

Testei seu programinha, ele tem uma falha comum nessa categoria de expressões, essa falha fica na escolha do operador antes de um escaneamento do segundo valor.

 

A falha aqui consiste na extração dum caractere em branco por razão da combinação com o especificador 'c'. Esse caractere extraido é o quebra de linha (nova linha) e/ou entrar (enter).

Observe o que ele fez:

Qual o primeiro valor? 2022
Qual o segundo valor? 12
Qual a operação desejada? (+ para somar, - para subtrair)O resultado é 0.000000

 

Sabe-se que a função scanf absorve inicialmente os “em branco” quando há espaço na corda de formato (para mais detalhes, confirme/confira na documentação). 

 

Basta um espaço à frente do especificador, assim no início da formato " %c", que resolvemos esse problema, especificmente.

 

c'11 - gcc'11.4


#include <stdio.h>

int main ()
{
  float valor1 , valor2 , resultado;
  char sinal;
  printf ("Qual o primeiro valor? ");
  scanf ("%f", &valor1);
  printf ("Qual o segundo valor? ");
  scanf ("%f", &valor2);
  printf ("Qual a operação desejada? (+ para somar, - para subtrair)");
  scanf (" %c", &sinal);
  if (sinal == '+')  resultado = valor1 + valor2;
  else if (sinal == '-') resultado = valor1 - valor2;
  printf ("O resultado é %f", resultado);
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!