Найти все натуральные числа, не превосходящие заданного m,
двоичная запись которых представляет собой симметричную
последовательность нулей и единиц (начинающуюся с единицы).
Показать десятичную и двоичную записи этих чисел.
Другие языки программирования и технологии
как осуществить эту задачу на языке С ?
#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]);
}
#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]);
}
точно так же как и на многих других языках программирования.
Писать долго - да и как-то странно делать за Вас все - Вы бы хоть набросок сделали; а так все просто. Подсказка: используйте объединения - union, плюс не забывайте, что старшие байты являются в последними в записи типа long или int.
Если уж совсем никак - пишите на почту.. . лучше все же со своими наработками.
Если уж совсем никак - пишите на почту.. . лучше все же со своими наработками.
"старшие байты являются в последними в записи типа long или int" - бред. Зависит от конкретной машины.
Где их найти, в массиве или где?
Похожие вопросы
- Задача на языке C с алгебраическими фракталами. Осуществить программную реализацию построения КУБИЧЕСКОГО ФРАКТАЛА
- Необходимо решить представленные задачи на языке Pascal:
- помогите с решением задачи на языке делфи..задача ниже
- Помогите написать задачу на языке С
- Помогите решить задачу на языке Паскаль. Найти сумму всех чётных чисел от 1 до 1000 (задачу решить 2 способами)
- Задача по языку С++
- Решение задачи на языке программирования С++.
- Помощь по задаче на языке C++
- Помогите решить задачу на языке c++. Не понимаю условия в конце кода.
- язык си. задача по языку Си. Задаются коэффициенты системы из трёх линейных уравнений. Найти корни.