Witam, zrobiłem sobie to o to zadanko:
https://main2.edu.pl/c/konkurs-wstepu-do-programowania/p/duz/
I w testach na ich stronie odrzuca mi 4 z 96 testów w każdym jest TAK a powino być NIE.
Trochę posiedziałem nad kodem i błędu znaleźć nie mogę.
Wiem , że był już post o to samo zadanie( o tu link do posta https://forum.pasja-informatyki.pl/239464/bardzo-duze-liczby-c), ale nie chodzi mi o samo rozwiązanie tylko raczej o pomoc w szukaniu błędu.
Przy okazji byłbym wdzięczny gdyby ktoś powiedział czy kod jest przejrzysty i czy jest to zrobione w miarę optymalnie. (Dopiero zaczynam).
A tu mój kod:
#include <iostream>
using namespace std;
bool rowny=false, awieksze, prawda=true;
int main()
{
string a,b,znak;
cin>>a>>znak>>b;
int da=a.length(), db=b.length();
if(da==db)
{
for(int i=0; i<da && prawda; i++)
{
if((int)a[i]%48>(int)b[i]%48)
{
awieksze=true;
prawda=false;
}
else if((int)a[i]%48<(int)b[i]%48)
{
awieksze=false;
prawda=false;
}
}
if(prawda)
rowny=true;
}
else if(da>db)
awieksze=true;
else
awieksze=false;
if(rowny && (znak=="==" || znak==">=" || znak=="<="))
{
cout<<"TAK"<<endl;
}
else if(awieksze && (znak==">="|| znak=="!="|| znak==">" ))
{
cout<<"TAK"<<endl;
}
else if(!awieksze && (znak=="<="|| znak=="!="|| znak=="<" ))
{
cout<<"TAK"<<endl;
}
else
cout<<"NIE"<<endl;
}