#include <stdio.h>
#include <math.h>
#include <conio.h>
main()
{ system ("color F8");
float a, b, x;
char escolha[15];
printf("Digite a operacao desejada, sem caracteres especiais: ");
scanf("%s", &escolha);
if(strcmp(escolha,"adicao")||(escolha,"Adicao")||(escolha,"ADICAO"))
{
printf("\nDigite o primeiro numero a ser somado: ");
scanf("%f", &a);
printf("\nDigite o segundo numero a ser somado: ");
scanf("%f", &b);
x=a+b;
printf("\nO resultado da soma entre %.2f e %.2f (valores aproximados) e: %.2f", a, b, x);
}
else
if(strcmp(escolha,"subtracao")||(escolha,"Subtracao")||(escolha,"SUBTRACAO"))
{
printf("\nDigite o primeiro numero a ser subtraido: ");
scanf("%f", &a);
printf("\nDigite o segundo numero a ser subtraido: ");
scanf("%f", &b);
x=a-b;
printf("\nO resultedo da subrtracao entre %.2f e %.2f (valores aproximados) e: %.2f", a, b, x);
}
if(strcmp(escolha,"divisao")||(escolha,"Divisao")||(escolha,"DIVISAO"))
{
printf("\nDigite o dividendo: ");
scanf("%f", &a);
printf("\nDigite o divisor: ");
scanf("%f", &b);
x=a/b;
printf("\nO resultedo da divisao entre %.2f e %.2f (valores aproximados) e: %.2f", a, b, x);
}
if(strcmp(escolha,"multiplicacao")||(escolha,"Multiplicacao")||(escolha,"MULTIPLICACAO"))
{
printf("\nDigite o primeiro numero a ser multiplicado: ");
scanf("%f", &a);
printf("\nDigite o segundo numero a ser multiplicado: ");
scanf("%f", &b);
x=a*b;
printf("\nO resultado da multiplicacao entre %.2f e %.2f (valores aproximados) e: %.2f", a, b, x);
system("pause");
}
}
Dúvida: strcmp
4 Respostas
Troque
if(strcmp(escolha,"subtracao")||(escolha,"Subtracao")||(escolha,"SUBTRACAO"))
Por
if(strcmp(escolha,"subtracao") == 0
||
strcmp(escolha,"Subtracao") == 0
||
strcmp(escolha,"SUBTRACAO") == 0)
É que strcmp retorna zero quando as strings são iguais. Além disso, o C não consegue identificar que você quer chamar 3 vezes a rotina strcmp se você não especificar o nome da rotina 3 vezes, como eu fiz acima.
Em C, 0 é false, e qualquer coisa diferente de 0 é true.
Como você está usando <conio.h> posso assumir que você está usando Windows e algum compilador como o da Microsoft ou da CodeGear. Nesse caso, provavelmente você pode usar:
if(_stricmp (escolha,"subtracao") == 0)
A rotina _stricmp é igual à rotina strcmp, mas ela não faz distinção entre letras minúsculas e maiúsculas. Então, se você escrever “subtracao” ou “Subtracao” ou “SUBTRACAO” ou mesmo “SuBtRaCaO” tanto faz, que ela vai considerar igual.
Veja: http://msdn.microsoft.com/en-us/library/k59z8dwe(VS.80).aspx
[color=red]Valeow mesmo pelas dicas![/color] :lol: Como não estava acostumado a mexer com strings, pensei q poderia fazer como os floats, ints, etc.
Você precisa ler novamente seu material sobre programação em C.