Witam mam problem z zadaniem:
Wiemy już, że każdy typ całkowity w języku C++ ma pewien ograniczony zakres. W tym zadaniu będziemy jednak operować na liczbach przekraczających zakresy wszystkich typów! Twoim zadaniem jest napisanie programu, który będzie porównywał takie bardzo duże liczby. Jak sobie z tym poradzisz?
Wejście
Wejście składa się tylko z jednego wiersza, zawierającego kolejno: liczbę naturalną a, odstęp, znaki porównania, odstęp i liczbę naturalną b (1 ≤ a, b ≤ 10^1000). Możliwe znaki porównania to: ==, !=, >, <, >=,<=.
Wyjście
Twój program powinien wypisać jedno słowo TAK lub NIE, oznaczające, czy nierówność podana na wejściu jest prawdziwa, czy fałszywa.
Po paru próbach i błędach skonstruowałem ten kod, ale nadal internetowa testerka znajduje 8 błędów na ok. 100 testów. Normalnie próbowałbym dalej metodą prób i błędów, ale jestem dość bliski limitu tych prób do zaliczenia kursu na mainie2. Byłbym naprawdę wdzięczny, gdyby ktoś przynajmniej napisał mi czy te błędy spowodowane są błędami w kodzie czy błędami w rozumowaniu.
#include<iostream>
#include<string>
using namespace std;
bool rowne(string a, string b)
{
if(a.length()==b.length()){
for(int i=0;i<a.length();++i)
{
if(a[i]!= b[i])
{
return false;
}
}
return true;
}
else if(a.size()!=b.size()){
return false;}
}
bool mniejsze(string a, string b){
int c,d;
if((a.length()<b.length()))
{
return true;
}
else if(a.length()==b.length()){
for(int z=0;z<a.length();++z)
{
if(a[z]-'0'< b[z]-'0')
{
return true;
}
}
return false;
}
else if(a.length()>b.length())
return false;
}
int main(){
string znak;
string a;
string b;
bool p=false;
cin>>a>>znak>>b;
int y=0;
int t=0;
while(a[0]=='0'&&a.length()!=1)
{
a.erase(0,1);
}
while(b[0]=='0'&&b.length()!=1)
{
b.erase(0,1);
}
if(znak=="=="){
if(rowne(a,b)==true)
p=true;
}
else if(znak=="!=")
{
if(rowne(a,b)!=true)
p=true;
}
else if(znak=="<"){
if(mniejsze(a,b))
p=true;
}
else if(znak==">")
{
if(mniejsze(b,a))
p=true;
}
else if(znak=="<="){
if(mniejsze(b,a)!=true)
p=true;
}
else if(znak==">="){
if(mniejsze(a,b)==false)
p=true;}
if(p==true)
cout<<"TAK";
else if(p==false)
cout<<"NIE";
return 0; }