Witam, mam takie zadanie:
Napisz program, który sprawdza, czy pomiędzy daną parą liczb zachodzi podana relacja.
Wejście
Na wejście programu podana zostanie pewna liczba zestawów danych. Zestawy składają się z liczby, po której następuje spacja, symbol relacji (==, !=, >= lub <=), spacja i druga liczba. Poszczególne zestawy zostaną rozdzielone znakiem nowej linii. Przyjmujemy, że żadna z liczb nie ma więcej niż 1000 cyfr.
Wyjście
Na wyjściu programu ma się pojawić ciąg zerojedynkowy, którego i-ty element jest równy 1 lub 0 w zależności od tego, czy relacja zawarta w i-tym wczytanym z wejścia zestawie danych jest prawdziwa czy fałszywa. Poszczególne elementy tego ciągu należy rozdzielić znakami nowej linii.
moje rozwiązanie daje błędną odpowiedź, czy ktoś mógłby mi pomóc wskazać błąd?
#include <iostream>
#include <string>
using namespace std;
int main ()
{
while(true)
{
string liczba1;
string liczba2;
string znak1;
int znak2;
int a;
cin>>liczba1>>znak1>>liczba2;
if (znak1== "<=") znak2=1;
if (znak1== ">=") znak2=2;
if (znak1== "==") znak2=3;
if (znak1== "!=") znak2=4;
switch (znak2)
{
case (1):
if(liczba1.size()>liczba2.size() ) cout<<"0"<<endl;
else if(liczba1.size()<liczba2.size() ) cout<<"1"<<endl;
else
{
for(int i=0; i<liczba1.size(); i++)
{
if(liczba1[i]>liczba2[i])
{
a=0;
break;
}
else {
if(i==liczba1.size()-1)
{a=1;
break;
}
}
}
if(a!=1)
{
cout<<"0"<<endl;
}
if(a==1)
cout<<"1"<<endl;
}
break;
case (2):
if(liczba1.size()<liczba2.size() ) cout<<"0"<<endl;
else if(liczba1.size()>liczba2.size()) cout<<"1"<<endl;
else
{
for(int i=0; i<liczba1.size(); i++)
{
if(liczba1[i]<liczba2[i] && liczba1.size()<=liczba2.size())
{
a=0;
break;
}
else {
if(i==liczba1.size()-1)
{a=1;
break;
}
}
}
if(a!=1)
{
cout<<"0"<<endl;
}
if(a==1)
cout<<"1"<<endl;
}
break;
case (3):
if(liczba1.size()!=liczba2.size()) cout<<"0"<<endl;
else
{
for(int i=0; i<liczba1.size(); i++)
{
if(liczba1[i]!=liczba2[i])
{
a=0;
break;
}
else if(liczba1[i]==liczba2[i] && i==liczba1.size()-1)
{
cout<<"1"<<endl;
a=1;
}
}
if(a!=1)
{
cout<<"0"<<endl;
}
}
break;
case (4):
if(liczba1.size()!=liczba2.size()) cout<<"1"<<endl;
else
{
for(int i=0; i<liczba1.size(); i++)
{
if(liczba1[i]!=liczba2[i] )
{
a=1;
break;
}
else if(liczba1[i]==liczba2[i] && i==liczba1.size()-1)
{
cout<<"0"<<endl;
a=0;
}
}
if(a==1)
{
cout<<"1"<<endl;
}
break;
}
}
if(cin.eof())break;
}
system("pause");
return 0;
}