Практика программирования (Бейсик, Си, Паскаль)


Задачи,советы и ответы - часть 8


else a:=chr(65+cif-lO)+a;

{ Замена цифры кодом ASCII, если цифра больше 9 }

num:=num div r; { Исключение обработанной цифры }

until (num=0);

num_to_str:=а; end; begin

write('Введите натуральное число - ');

readln(N);

writelnf'Ero представление в разных системах счисления таково :']

for j :=2 to 16 do

writeln('no основанию ',j:2,' = ',num_to_str(N,j));

readln; end.

Задание 2.05. Симметричное разложение с наименьшим основанием

Дано натуральное число N (N < зоооо). Найти систему счисления с наименьшим основанием Pmin, в которой N имеет симметричное представление. Например,

ДЛЯ N=0 Pmin-2 (910 = 10012),

ДЛЯ N-1000 Emin=S (100010 - 13319)

Программа должна запрашивать число N, выдавать Pmin и значения

цифр в представлении числа N в этой системе (цифры можно выводить в виде обычных десятичных чиселл).

Cовет 1(oбщий)

Очевидно, что самой расточительной по количеству цифр является двоичная система счисления. Однако при заданном ограничении на диапазон исходных чисел для записи самого большого числа N потребуется не более 15 двоичных разрядов. Поэтому для хранения цифр, получаемых при переводе в ту или иную систему счисления, вполне можно обойтись массивом из 15 элементов.

Второй очевидный факт заключается в том, что всегда найдется такая система счисления, в которой разложение любого числа N будет симметричным. Такой системой, в частности, является система с основанием N-1, т. к. в ней число N выглядит как 11. Поэтому остается только организовать цикл по основаниям систем от 2 до N-I и, как только будет найдено симметричное разложение, прекратить перебор.

Совет 2 (общий)

Разумно организовать в программе две внешние функции — perevod (перевод исходного числа в систему с заданным основанием) и proba (проверка симметрии полученных цифр). Первая функция может быть построена по аналогии с функцией num_to_str, с той лишь разницей, что цифры, получаемые в процессе перевода, надо запоминать в массиве.

Совет 3 (QBasic)

Обратите внимание на схему вывода разложения, которое может не убраться в одной строке. Поэтому принято решение выводить в каждой строке по одному элементу разложения. Количества строк на экране вполне достаточно для размещения самого длинного представления в двоичной системе.




- Начало -  - Назад -  - Вперед -