Programa só fica somando. [RESOLVIDO]

1. Programa só fica somando. [RESOLVIDO]

brendon
brendonzt

(usa Debian)

Enviado em 30/10/2020 - 17:59h

Estou fazendo uma Calculadora simples que pede dois números e em seguida ele pede se quer somar ou subtrair. Porém no meu código, ele não aceita somar, ignora e só fica subtraindo. O que há de errado nele?

#include <stdio.h>

int main() {

int resultado;
int num1, num2;
char operador;

printf("Digite o primeiro número\n");
scanf("%i", &num1);
setbuf(stdin, NULL);
printf("Digite o segundo número\n");
scanf("%i", &num2);
setbuf(stdin, NULL);
printf("Escolha o que deseja fazer:\n +\n -");
scanf("%c", &operador);
setbuf(stdin, NULL);

if(operador = '-') {
resultado = num1-num2;
} else if(operador = '+') {
resultado = num1+num2;
}
else{
printf("Comando inválido\n");
}

printf("Resultado é %i", resultado);



return 0;
}


  


2. MELHOR RESPOSTA

Stanislaus K
StanislausK

(usa FreeBSD)

Enviado em 30/10/2020 - 23:38h

Ola,

minha sugestão (em negrito as alterações feitas):

#include <stdio.h>

int main() {

int resultado;
int num1, num2;
char operador;

printf("Digite o primeiro número\n");
scanf("%i", &num1);
printf("Digite o segundo número\n");
scanf("%i", &num2);
printf("Escolha o que deseja fazer (+/-):\n");
scanf(" %c", &operador);

setbuf(stdin, NULL);

if(operador == '-') {
resultado = num1-num2;
} else if(operador == '+') {
resultado = num1+num2;
} else {
printf("Comando inválido\n");
}

printf("Resultado é %i", resultado);

return 0;
}

3. Re: Programa só fica somando. [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 30/10/2020 - 18:15h

brendonzt escreveu:

Estou fazendo uma Calculadora simples que pede dois números e em seguida ele pede se quer somar ou subtrair. Porém no meu código, ele não aceita somar, ignora e só fica subtraindo. O que há de errado nele?

#include <stdio.h>

int main() {

int resultado;
int num1, num2;
char operador;

printf("Digite o primeiro número\n");
scanf("%i", &num1);
setbuf(stdin, NULL);
printf("Digite o segundo número\n");
scanf("%i", &num2);
setbuf(stdin, NULL);
printf("Escolha o que deseja fazer:\n +\n -");
scanf("%c", &operador);
setbuf(stdin, NULL);

if(operador = '-') {
resultado = num1-num2;
} else if(operador = '+') {
resultado = num1+num2;
}
else{
printf("Comando inválido\n");
}

printf("Resultado é %i", resultado);



return 0;
}


If (operador == '-') {
...
existe uma função getchar() p obter char de stdin
O linux tem debugador muito bom, o gdb
http://www.lrc.ic.unicamp.br/~luciano/courses/mc202-2s2009/tutorial_gdb.txt


4. Re: Programa só fica somando. [RESOLVIDO]

Paulo Jr
Pebis

(usa Debian)

Enviado em 30/10/2020 - 18:16h


if(operador = '-')

Comparação em C não é feita com 2 == ?


5. Re: Programa só fica somando. [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 30/10/2020 - 19:05h

Pebis escreveu:


if(operador = '-')

Comparação em C não é feita com 2 == ?


O c aceita fazer if (operador = 'x'){
Mas ele faz um negócio estranho. Ele faz a atribuição
operador = 'x'
e pula p linha seguinte.


6. Re: Programa só fica somando.

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 30/10/2020 - 21:06h

leandropscardua escreveu:

Pebis escreveu:


if(operador = '-')

Comparação em C não é feita com 2 == ?


O c aceita fazer if (operador = 'x'){
Mas ele faz um negócio estranho. Ele faz a atribuição
operador = 'x'
e pula p linha seguinte.


o if (operador = 'x')
vai atribuir o valor do char 'x' para a variável operador
Depois ele vai executar a lógica do if: operador é verdadeiro ou diferente de zero? Sim, dai vai entrar no if.

o if (operador == 'x')
vai pegar o valor de operador e comparar com o 'x': operador é igual ao 'x'? Dependendo do valor do operador ele vai entrar ou não no bloco do if.

____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Acesse meu GitHub:
https://github.com/cpusam
Capeta (demo) do meu trabalho:
https://cpusam.github.io/


7. Re: Programa só fica somando. [RESOLVIDO]

Arthur Candido Regueira de Miranda
tuzin

(usa Ubuntu)

Enviado em 30/10/2020 - 21:31h

Pebis escreveu:


if(operador = '-')

Comparação em C não é feita com 2 == ?


Tentei compilar o código original e recebi alguns avisos do compilador, o princpal deles foi esse "==", pois o "=" é um operador de atribuição, os demais são irrelevantes.

Edit:
Me confundi alí, masok


8. Re: Programa só fica somando. [RESOLVIDO]

Paulo Jr
Pebis

(usa Debian)

Enviado em 30/10/2020 - 23:22h


tuzin escreveu:

Pebis escreveu:


if(operador = '-')

Comparação em C não é feita com 2 == ?


Tentei compilar o código original e recebi alguns avisos do compilador, o princpal deles foi esse "==", pois o "=" é um operador de comparação, os demais são irrelevantes.


== é comparação
= é a atribuição

não sei se funciona com string... mas == é comparação