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


         

аргументом которой является длинное целое


{ Поиск симметричного разложения числа }

uses Crt;

var

i, k, p,N: integer;

a:array [0..15] of integer;
function perevod(n,p:integer) :integer;
{ Перевод числа n в систему с основанием р

Цифры р-ричного числа запоминаются в массиве а}

begin

for i:=0 to 15 do
begin

a[i]:=n mod p;
n:=n div p;
if n=0 then

begin perevod:=i;
exit;
end;
end;
end;

function proba(k:integer):integer;
{ Анализ числа, представленного k цифрами в массиве а

Если число - палиндром, то proba=l }
begin

for i:=0 to k div 2 do
if a[i]<>a[k-i] then
begin proba:=0;
exit;
end;
proba:=1;
end;
begin clrscr;

writeln('Поиск симметричного разложения с минимальным основанием');
writeln('Введите число');
readln(N);
for p:=2 to N do
begin

k:=perevod(N,p);
if proba(k)=0 then continue;
writeln('минимальное основание = ',p);
for i:=0 to k do writeln(a[i]);
break;
end;
readln;
end.

Задание 2.06. Суммирование десятичных цифр

Составить функцию sum_dig(n), аргументом которой является длинное целое число. Возвращаемое значение должно быть равно сумме десятичных цифр числа n.

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

Обратите внимание на ситуацию, когда аргумент отрицателен. Остаток от де-ления отрицательного числа на 10 будет также отрицательным.

Совет 2 (OBasic)

Будьте внимательны при определении очередного частного от деления числа на 10. QBasic производит округления, и результат деления, например, целого числа 15 на целое число 10 даст в частном не 1, а 2.

Совет 3 (Си, Паскаль)

Обратите внимание на то, что циклы do (Си) и repeat (Паскаль) требуют противоположных условий выхода из цикла.

Программа 2_06.bas

RЕМ Суммирование десятичных цифр числа

DECLARE FUNCTION SUMDIG (N&)

CLS

INPUT "Введите целое число";М&

K=SUMDIG(M&)

PRINT "Сумма его цифр = ";К

END

FUNCTION SUMDIG(N&)

IF N&<0 THEN N&=-N& : ' Смена знака у отрицательного числа

RESULT=0

DO

RESULT=RESULT+(N& MOD 10&) : ' Накопление суммы цифр

Содержание  Назад  Вперед