program PrintNumberInfoProg; uses crt; const MAX_COUNT = 7; MAX_VALUE = 199; MIN_VALUE = 100; var UserInput : Integer; UserInputCounter : Integer = 1; UserInputs : array[1..MAX_COUNT] of Integer; PrintLoopCounter : Integer; procedure PrintNumberInfo(const Number : Integer); var SumOfDigits : Integer = 0; ProductOfDigits : Integer = 1; QuantityOfDigits : Integer = 0; TemporaryQuotient : Integer; begin TemporaryQuotient := Number; while TemporaryQuotient > 0 do begin QuantityOfDigits := QuantityOfDigits + 1; SumOfDigits := SumOfDigits + TemporaryQuotient mod 10; ProductOfDigits := ProductOfDigits * (TemporaryQuotient mod 10); TemporaryQuotient := TemporaryQuotient div 10; end; writeln('Информация о цифрах в числе ', Number, ': '); writeln('Всего цифр: ', QuantityOfDigits); writeln('Сумма цифр: ', SumOfDigits); writeln('Произведение цифр: ', ProductOfDigits); writeln(); end; begin repeat clrscr; writeln('(', UserInputCounter, ' число из ', MAX_COUNT, ')'); write('Введите число в промежутке от ', MIN_VALUE, ' до ', MAX_VALUE, ': '); readln(UserInput); if (UserInput >= MIN_VALUE) and (UserInput <= MAX_VALUE) then begin UserInputs[UserInputCounter] := UserInput; UserInputCounter := UserInputCounter + 1; end else begin writeln('Число ', UserInput, ' вне заданного промежутка!'); writeln('(нажмите любую кнопку для повтора ввода...)'); readkey(); end; until UserInputCounter > MAX_COUNT; clrscr; for PrintLoopCounter := 1 to MAX_COUNT do begin PrintNumberInfo(UserInputs[PrintLoopCounter]); end; end.