Ir ao conteúdo
  • Cadastre-se
laritorres

C if e else dando erro

Posts recomendados

Sempre que coloco um caractere diferente ele continua somando, no exemplo ta sinal de subtração  ' - 'mas mesmo assim ele soma ja tentei colocar if e if if e else e nada funciona, estou a 30min tentando resolver esse erro. me ajudem pfv ❤️

ERRO IF E ELSE.png

  • Amei 2
  • Triste 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@laritorres        ele continua somando porque na comparação você colocou hum sinal de igualdade   "   =  "    e com isso ele está apenas adicionando o caractere ' +  ' ao valor da variável  total , e não faz nenhuma comparação ,  e  na linguagem  c   ou    c++ ou   c#   e também na java ,  o sinal de comparação são   Dois  sinais de igual  "  ==   "  e creio que essa comparação de int com caractere não dará bom resultado certo não ,      qual compilador você está usando ?

e seria melhor se você postasse no formato texto , facilitaria bastante   .

  • Curtir 1
  • Amei 1
  • Triste 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>
	float vA,vB;
	char r;
int main(){
	printf("\nInforme um numero: ");
	scanf("%f", &vA);
	printf("\nInforme outro numero: ");
	scanf("%f", &vB);
	printf("Digite a operação(+)(-)(*)(/))\n"); 
	scanf(" %c", &r); 
    if (r=='+'){
    printf("\n%.2f", (vA + vB));
    }
	else if(r=='-'){
	printf("\n%.2f", (vA - vB));
	}
	else if(r=='*'){
	printf("\n%.2f", (vA * vB));
	}
	else if(r=='/'){
	printf("\n%.2f", (vA / vB));
	}
	else{printf ("opcao invalida\n");
	return main();
	}
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 minutos atrás, Herbertbahia disse:

scanf(" %c", &r);

tem um espacinho a+. Não sei se dá diferença. Tenta tratar como decimal %d pra ver. Tenta deixar mais "elegante" com o comando switch case.

switch (r) {
case '+': soma(Va,Vb);break
case '-': subtracao(Va,Vb);break
...
}

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, Isadora Ferraz disse:

tem um espacinho a+

É uma indicação para scanf (), diz que ignore todos os caracteres na entrada inicial em branco (\n; \f; \r; \t ...).

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, devair1010 disse:

@laritorres        ele continua somando porque na comparação você colocou hum sinal de igualdade   "   =  "    e com isso ele está apenas adicionando o caractere ' +  ' ao valor da variável  total , e não faz nenhuma comparação ,  e  na linguagem  c   ou    c++ ou   c#   e também na java ,  o sinal de comparação são   Dois  sinais de igual  "  ==   "  e creio que essa comparação de int com caractere não dará bom resultado certo não ,      qual compilador você está usando ?

e seria melhor se você postasse no formato texto , facilitaria bastante   .

int main(){
    
    int num1, num2, total, adi, sub, mult, div;
    
    
    printf("Digite um numero: ", num1);
    scanf("%i", &num1);
    printf("Digite outro numero: ", num2);
    scanf("%i", &num2);
    
    printf("Qual operacao matematica você deseja executar?  : ", total);
    scanf("%i", &total);
    
    
    
     if (total='+'){
         adi= num1+num2;
        printf("%i + %i = %i", num1,num2, adi);
    }
     else if (total='-'){
         sub= num1-num2;
        printf("%i - %i = %i", num1,num2, sub);
    }
    else if(total='*'){
        mult= num1/num2;
        printf("%i * %i = %i", num1, num2, mult);
    }
    else if(total='/'){
        printf("%i / %i = %i", num1, num2, div);
    }
//    else if(op=){
//        printf("Caractere Invalido");
//    }

    
    
    return 0;
}

 

ESTOU USANDO O DEV C++ tentei colocar dois '==' mas nao adianta de nada

adicionado 9 minutos depois

@Herbertbahia

6 horas atrás, Herbertbahia disse:


#include <stdio.h>
	float vA,vB;
	char r;
int main(){
	printf("\nInforme um numero: ");
	scanf("%f", &vA);
	printf("\nInforme outro numero: ");
	scanf("%f", &vB);
	printf("Digite a operação(+)(-)(*)(/))\n"); 
	scanf(" %c", &r); 
    if (r=='+'){
    printf("\n%.2f", (vA + vB));
    }
	else if(r=='-'){
	printf("\n%.2f", (vA - vB));
	}
	else if(r=='*'){
	printf("\n%.2f", (vA * vB));
	}
	else if(r=='/'){
	printf("\n%.2f", (vA / vB));
	}
	else{printf ("opcao invalida\n");
	return main();
	}
}

 

o que eu fiz de diferente o seu pegou mas ficou em loop infinito

Compartilhar este post


Link para o post
Compartilhar em outros sites

@laritorres você esta declarando uma variavel do tipo inteiro chamada int total e esta tentando atribuir e comparar caracteres a ela. Inteiros so recebem numeros inteiros. Para caracteres você deve declarar uma variavel do tipo char.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...