Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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
Postado

#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
  • Membro VIP
Postado
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
Postado
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
Postado
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

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!