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


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


while (N) {

d[N % 10]++; /* Выделение и учет очередной цифры */

N=N/10; /* Удаление обработанной цифры */ }

/* Цикл подсчета количества обнаруженных цифр */

for(k=0; k<10; k++)

if(d[k]) s++;

return s; }

Программа 2_08.pas

program NumDigits;

{ Определение количества различных цифр в числе }

var

N:longint;

function num_digits(N:longint):byte;

{ Выделение и подсчет количества разных цифр в числе N } var

d:array [0..9] of byte; { Массив счетчиков }

s,k:byte;

begin

if N<10 then num_digits:=1

else begin

for k:=0 to 9 do d[k]=0; { Сброс счетчиков }

s: =0 ;

while N<> 0 do begin

inc(d[N mod 10]); { Выделение и учет очередной цифры }

N := N div 10; { Удаление обработанной цифры }

end;

{ Цикл подсчета количества обнаруженных цифр }

for k:=0 to 9 do

if(d[k]<>0) then inc(s);

num_digits:=s;

end;

end;

begin

write('Введите число : ');

readln(N);

writeln('Количество разных цифр в его записи = ',num_digits(N));

readln;

end.

Задание 2.09. Определение цифры в заданной позиции

Составить функцию digit_in_pos (n,i), аргументами которой являются длинное целое число n и номер i позиции цифры в десятичном представлении n. Отсчет номеров позиций ведется справа налево от 0 и соответствует "весу" цифры (степени основания), с которым цифра входит в число. Например:

n=1985

в 0-й позиции находится цифра 5;

в 1-й позиции находится цифра 8;

во 2-й позиции находится цифра 9;

в 3-й позиции находится цифра 1;

Функция digit_in_pos должна возвращать цифру, расположенную в 1-й позиции числа п.

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

RЕМ Анализ цифр в каждой позиции заданного числа

DECLARE FUNCTION DIGINPOS(N AS LONG,J AS INTEGER)

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

FOR K%=0 ТО 9

DIGIT=DIGINPOS(M&,К%)

PRINT "В позиции ";К%;" находится ",DIGIT NEXT K%

END

FUNCTION DIGINPOS(N AS LONG,J AS INTEGER)

REM Определение десятичной цифры числа N в позиции j

N1&=N

FOR K%=0 TO J




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