Ir ao conteúdo

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


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

Posts recomendados

Postado
#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
  • Solução
Postado
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
  • 1 ano depois...
Postado

@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);
}

 

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!