[code:1]#include <stdio.h>
int palindrom (int x)
{
int t, l = 0, d = 0, n = 1;
t = x;
while (t > 0)
{
l = l + ((t % 2) * n);
t = t / 2;
n = 10 * n;
}
t = x;
n = n / 10;
while (t > 0 && n > 0)
{
d = d + ((t % 2) * n);
t = t / 2;
n = n / 10;
}
if (l == d) return 1;
else return 0;
}
int main ()
{
int m, n, i;
printf("Upisite interval: "); scanf("%d%d", &m, &n);
if ((m > 0 && n > 0) && m < n)
{
printf("Binarni palindromi u intervalu su: \n");
for (i = m; i <= n; i++)
if (palindrom(i)) printf("%d\n", i);
}
else printf("Greska!");
return 0;
}
[/code:1]
Program dobro radi, no najveći broj koji prepoznaje kao binarni palindrom je 511 (111111111), no veće brojeve poput 1023 (1111111111) neće prepoznati.
Kako riješiti taj problem, tj. kako napisati ovu moju funkciju ''palindrom'' tako da ne treba računati sa velikim brojevima i zato griješiti?
[/code]
Kod: | #include <stdio.h>
int palindrom (int x)
{
int t, l = 0, d = 0, n = 1;
t = x;
while (t > 0)
{
l = l + ((t % 2) * n);
t = t / 2;
n = 10 * n;
}
t = x;
n = n / 10;
while (t > 0 && n > 0)
{
d = d + ((t % 2) * n);
t = t / 2;
n = n / 10;
}
if (l == d) return 1;
else return 0;
}
int main ()
{
int m, n, i;
printf("Upisite interval: "); scanf("%d%d", &m, &n);
if ((m > 0 && n > 0) && m < n)
{
printf("Binarni palindromi u intervalu su: \n");
for (i = m; i <= n; i++)
if (palindrom(i)) printf("%d\n", i);
}
else printf("Greska!");
return 0;
}
|
Program dobro radi, no najveći broj koji prepoznaje kao binarni palindrom je 511 (111111111), no veće brojeve poput 1023 (1111111111) neće prepoznati.
Kako riješiti taj problem, tj. kako napisati ovu moju funkciju ''palindrom'' tako da ne treba računati sa velikim brojevima i zato griješiti?
[/code]
Zadnja promjena: ceps; 13:07 uto, 23. 11. 2010; ukupno mijenjano 1 put.
|