Witam jestem początkującym programistą i mam pewien problem z zadaniem ze spoja. Szczerze mówiąc nie mam pojęcia dlaczego dostaję błąd, ponieważ dla wszystkich przypadków które sprawdziłem zadanie działa poprawnie.
Proszę o pomoc.
#include<iostream>
#include <cmath>
using namespace std;
string slowa(long long a)
{
string napis;
if ((a >= 900)&&(a < 1000))
{
napis += "dziewiecset ";
a = a % 100;
}
else if ((a >= 800)&&(a < 900))
{
napis += "osiemset ";
a = a % 100;
}
else if ((a >= 700)&&(a < 800))
{
napis += "siedemset ";
a = a % 100;
}
else if ((a >= 600)&&(a < 700))
{
napis += "szescset ";
a = a % 100;
}
else if ((a >= 500)&&(a < 600))
{
napis += "piecset ";
a = a % 100;
}
else if ((a >= 400)&&(a < 500))
{
napis += "czterysta ";
a = a % 100;
}
else if ((a >= 300)&&(a < 400))
{
napis += "trzysta ";
a = a % 100;
}
else if ((a >= 200)&&(a < 300))
{
napis += "dwiescie ";
a = a % 100;
}
else if ((a >= 100)&&(a < 200))
{
napis += "sto ";
a = a % 100;
}
if ((a >= 90)&&(a < 100))
{
napis += "dziewiecdziesiat ";
a = a % 10;
}
else if ((a >= 80)&&(a < 90))
{
napis += "osiemdziesiat ";
a = a % 10;
}
else if ((a >= 70)&&(a < 80))
{
napis += "siedemdziesiat ";
a = a % 10;
}
else if ((a >= 60)&&(a < 70))
{
napis += "szescdziesiat ";
a = a % 10;
}
else if ((a >= 50)&&(a < 600))
{
napis += "piecdziesiat ";
a = a % 10;
}
else if ((a >= 40)&&(a < 50))
{
napis += "czterdziesci ";
a = a % 10;
}
else if ((a >= 30)&&(a < 40))
{
napis += "trzydziesci ";
a = a % 10;
}
else if ((a >= 20)&&(a < 30))
{
napis += "dwadziescia ";
a = a % 10;
}
if (a == 19) napis += "dziewietnascie ";
else if (a == 18) napis += "osiemnascie ";
else if (a == 17) napis += "siedemnascie ";
else if (a == 16) napis += "szesnascie ";
else if (a == 15) napis += "pietnascie ";
else if (a == 14) napis += "czternascie ";
else if (a == 13) napis += "trzynascie ";
else if (a == 12) napis += "dwanascie ";
else if (a == 11) napis += "jedynascie ";
else if (a == 10) napis += "dziesiec ";
else if (a == 9) napis += "dziewiec ";
else if (a == 8) napis += "osiem ";
else if (a == 7) napis += "siedem ";
else if (a == 6) napis += "szesc ";
else if (a == 5) napis += "piec ";
else if (a == 4) napis += "cztery ";
else if (a == 3) napis += "trzy ";
else if (a == 2) napis += "dwa ";
else if (a == 1) napis += "jeden ";
return napis;
}
string liczba_na_slowa(long long a)
{
string napis;
double b;
if (a == 0)
{
napis += "zero";
return napis;
}
while (a > 0)
{
if (a >= 1000000000000)
{
b = a / 1000000000000;
napis += slowa(b);
napis += "bln. ";
a = a % 1000000000000;
cout << a << endl;
}
else if (a >= 1000000000)
{
b = a / 1000000000;
napis += slowa(b);
napis += "mld. ";
a = a % 1000000000;
cout << a << endl;
}
else if (a >= 1000000)
{
b = a / 1000000;
napis += slowa(b);
napis += "mln. ";
a = a % 1000000;
cout << a << endl;
}
else if (a >= 1000)
{
b = a / 1000;
napis += slowa(b);
napis += "tys. ";
a = a % 1000;
cout << a << endl;
}
else if (a >= 1)
{
napis += slowa(a);
a = 0;
}
}
int c = napis.length();
napis[c-1] = '\0';
return napis;
}
int main()
{
int n;
long long a;
cin >> n;
for (int i=0; i<n; i++)
{
cin >> a;
string napis = liczba_na_slowa(a);
cout << napis << "\n";
}
return 0;
}