/ / Operator OR w C - c, operator-keyword

Operator OR w C - c, operator-keyword

Próbowałem zrobić kalkulator w C. Napisałem ten kod

#include <stdio.h>

int main()
{
char proc;
float x,y,z;
printf("Enter the proccess you need to do :nA) +nB) -nC) *nD) /n>>>  ");
scanf("%c", &proc);
if (proc !="A" || proc !="a" || proc !="B" || proc !="b" || proc !="C" || proc !="c" || proc !="D" || proc !="d" )
{
printf("enter a valid charecter.n");
return 0;
}
else
printf("Enter your first number: ");
scanf("%f", &x);
printf("Enter your seconde number: ");
scanf("%f", &y);

//Start of IF statment
if (proc =="A" || proc == "a")
{
z = x+y;
printf("The sum is %.2f:n",z);
}
else if (proc =="B" || proc == "b")
{
z = x-y;
printf("The sum is %.2f:n",z);
}
else if (proc =="B" || proc == "b")
{
z = x*y;
printf("The sum is %.2f:n",z);
}
else if (proc =="B" || proc == "b")
{
z = x/y;
printf("The sum is %.2f:n",z);
}
else   printf("Enter a valid charecter.n");
//End of IF statment
return 0;
}

ale kiedy próbuję go uruchomić i wypróbować na przykład A, pokaż "wprowadź prawidłową postać". które ja potrzebuję, jeśli nie wpiszę tych znaków A, B, C, D również małymi literami. Czy zrobiłem to w niewłaściwy sposób?

Odpowiedzi:

3 dla odpowiedzi № 1

Tak, pomyślałeś o tym niepoprawnie. Pomyśl o logice:

proc !="A" || proc !="a" || ...

Weź przykład, w którym wstawiłeś "A". Następnie oceniasz:

false || true || ...

true || wszystko jest zawsze prawdziwe, więc masz problem. Chcesz &&.


0 dla odpowiedzi nr 2

Chociaż poprawna odpowiedź znajduje się już w komentarzach, Pozwólcie, że powiem wam właściwy sposób robienia tego.

Przede wszystkim sprawdzasz wiele niepotrzebnych warunków, możesz po prostu zrobić coś takiego:

// Check here about this function : https://stackoverflow.com/questions/2661766/c-convert-a-mixed-case-string-to-all-lower-case
proc = tolower(proc);

A następnie po prostu sprawdź tylko 4 warunki, sprawdzasz 4 * 2, 8 warunków

// Using "&&" here will solve your problem.
if(proc != "a" && proc != "b" && proc != "c" && proc != "d")

Cały ten program można również przewiercić, jeśli potrafisz nauczyć się przełączania.