What is wrong with my code although it is giving correct output, it shows wrong answer and doesnt pass test cases

This is the basic calculator problem of challenges:

#include
using namespace std;
int main() {
char ch;
int n1,n2;
cin>>ch;

while(ch!='x'||ch!='X')
{
	
	switch(ch)
	{
		case '+':
		
		cin>>n1;
		cin>>n2;
		if(n1>=0&&n1<=100000000&&n2>=0&&n2<=100000000)
		cout<<(n1+n2)<<endl;
		break;

		case '-':
		cin>>n1;
		cin>>n2;
		if(n1>=0&&n1<=100000000&&n2>=0&&n2<=100000000)
		cout<<(n1-n2)<<endl;
		break;

		case '*':
		cin>>n1;
		cin>>n2;
		if(n1>=0&&n1<=100000000&&n2>=0&&n2<=100000000)
		cout<<(n1*n2)<<endl;
		break;

		case '/':
		cin>>n1;
		cin>>n2;
		if(n1>=0&&n1<=100000000&&n2>0&&n2<=100000000)
		cout<<(n1/n2)<<endl;
		break;

		case '%':
		cin>>n1;
		cin>>n2;
		if(n1>=0&&n1<=100000000&&n2>0&&n2<=100000000)
		cout<<(n1%n2)<<endl;
		break;

		case 'x':
		case 'X':

		break;

		default:
		cout<<"Invalid operation. Try again."<<endl;
		exit(0);
		break;
	}

	cin>>ch;
}

return 0;

}

here you should use and instead of or

this is unnecessary
it is given in constraints
means it will hold true no need to check this

Modified Code

check now
if you have any doubt feel free to ask