Другие языки программирования и технологии

как осуществить эту задачу на языке С ?

Найти все натуральные числа, не превосходящие заданного m,
двоичная запись которых представляет собой симметричную
последовательность нулей и единиц (начинающуюся с единицы).
Показать десятичную и двоичную записи этих чисел.
Behram Memmedov
Behram Memmedov
243
#include <stdio.h>
#include <conio.h>
#include <locale.h>

void binary(int);

void main()
{
int number;
int n;
setlocale(LC_CTYPE, "Russian_Russia.1251");
printf("\n Введите натуральное число: ");
scanf("%d", &number);
if (number > 0)
for (n = 1; n <= number; n++) binary(n);
else printf("\n\a Ошибка! ");
_getch();
}

void binary(int num)
{
int mask, index = -1, flag = 1, n, k;
char a[31];
mask = 1 << (sizeof(int) * 8 - 2);
for (n = 1; n < sizeof(int) * 8; n++)
{
a[n - 1] = (num & mask ? '1' : '0');
if (flag && a[n - 1] == '1')
{
index = n - 1;
flag = 0;
}
mask >>= 1;
}
for (n = index, k = 30; n < 31; n++, k--)
if (a[n] != a[k]) return;
printf("\n %d\t<=>\t", num);
for (n = index; n < 31; n++)
printf("%c", a[n]);
}
Waldemar Brill
Waldemar Brill
63 035
Лучший ответ
точно так же как и на многих других языках программирования.
Роберт Низамов
Роберт Низамов
61 539
Писать долго - да и как-то странно делать за Вас все - Вы бы хоть набросок сделали; а так все просто. Подсказка: используйте объединения - union, плюс не забывайте, что старшие байты являются в последними в записи типа long или int.
Если уж совсем никак - пишите на почту.. . лучше все же со своими наработками.
"старшие байты являются в последними в записи типа long или int" - бред. Зависит от конкретной машины.
Где их найти, в массиве или где?
Чина.! Саликов
Чина.! Саликов
1 967