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


         

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


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

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