Write a C program to check whether a given integer is positive even, negative even, positive odd or negative odd.
#include <iostream>
using namespace std;
int main()
{
int n;
cout<< "Enter the number you want to check: \n";
cin>>n;
if(n>0 &&n%2 ==0){
cout<< "number is positive even \n";
}
else if(n<0 &&n%2 ==0){
cout<< "number is negative even \n";
}
else if(n<0 &&n%2 !=0){
cout<< "number is negative odd \n";
}
else (n>0 && n%2 !=0){
cout<< "number is positive odd \n";
}
return 0;
}
This is my code. When I don't add a semicolon after else (n>0 && n%2 !=0)
. It shows an error: expected ';' before '{' token.
When there is semi colon there is a logic error where else output is shown no matter what the number is.
CodePudding user response:
You can not write else (condition)
without using if
.
the correct way is write else if (condition)
like you are doing or you can simply write else { cout << "Number is positive"; }
.
CodePudding user response:
You can't leave out the if
when you have a condition - the compiler interprets n>0 && n%2 !=0
as the body of the else
branch, equivalent to this:
else {
(n>0 && n%2 !=0)
}
{
cout<< "number is positive odd \n";
}
which is missing a semicolon - and if you add one, you get an expression that does nothing and an unconditional output, equivalent to:
else
n>0 && n%2 !=0;
cout<< "number is positive odd \n";
Since none of your conditions cover the case where n
is zero, you probably want
else if (n>0 && n%2 !=0){
cout<< "number is positive odd \n";
}
else {
cout << "number is zero\n";
}
CodePudding user response:
This line: else (n>0 && n%2 !=0)
else
means that if all the above if
and if-else
conditions are false, then the logic in the else
condition is executed, no condition need. But you add a condition
n>0 && n%2 !=0
which is wrong syntax.
You can fix it by changing:
else (n>0 && n%2 !=0){
cout<< "number is positive odd \n";
}
To:
else if (n>0 && n%2 !=0){
cout<< "number is positive odd \n";
}
Or:
else{
cout<< "number is positive odd \n";
}