Tak už nic už jsem to vyřešil a vše funguje - sčítání provádím manuálně, a dle ULLONG_MAX hlídám jednotlivé cifry maxima. na konci pak porovnávám carry (přenos z předchozího řádu).
Příspěvky odeslané z IP adresy 78.45.137.–
mark
mark
teď řeším stejné zadání jako ty :D Vše funguje až na to, že nehlídá tu horní mez. respektive hlídá, ale špatně. Jen nevím proč nepropadne podmínkou když součet dvou unsigned long long integerů je větší nebo roven hranici, nebo jedno ze sčítaných čísel je větší rovno horní mezi, tak program neukončí.
typedef unsigned long long int ulli;
int main()
{
ulli vstup, count=0;
int in1;
printf("Zadejte cislo:\n");
in1 = scanf("%llu", &vstup);
if(in1 < 1)
{
printf("Nespravny vstup.\n");
}else
{
ulli n1=0, n2=0;
while(vstup < ULLONG_MAX){
if(check(vstup) == 1) //otestujeme jestli je palindrom
{
printf("Vypocteny palindrom: %llu (iteraci: %i)\n", vstup, count);
return 0;
}else
{
count++;
n1 = vstup;
n2 = rotate(vstup);
if(n1+n2 >= ULLONG_MAX)
{
printf("Palindrom nenalezen.\n");
return 0;
}
vstup = n1 + n2;
}
}
printf("Palindrom nenalezen.\n");
}
return 0;
}