За один просмотр файла, вывести числа сумма цифр которых больше А - Turbo Pascal
Формулировка задачи:
Дано файл натуральных чисел. За один просмотр файла, вывести числа сумма цифр которых больше А.
Решение задачи: «За один просмотр файла, вывести числа сумма цифр которых больше А»
textual
Листинг программы
const
n = 100;
function Summ(n: longint): byte;
{ (C) Puporev}
var
sm: byte;
u: longint;
begin
sm := 0;
while n > 0 do
begin
u := n mod 10;
sm := sm + u;
n := n div 10;
end;
Summ := sm;
end;
var
f: file of integer;
a, i: integer;
begin
assign(f, 'data.dat');
rewrite(f);
for i := 1 to n do
begin
a := random(n) + 1;
write(a:5);
write(f, a);
end;
close(f);
reset(f);
writeln;
write('Введите число А: ');
readln(a);
while not eof(f) do
begin
read(f, i);
if summ(i) > a then
write(i:5);
end;
close(f);
end.
Объяснение кода листинга программы
- В первой функции
Summобъявлены две переменные:smтипаbyte(байт) иuтипаlongint(длинное целое). Функция не принимает аргументов. Внутри циклаwhileпроисходит деление числаnна 10, покаnне станет равным нулю. Затем значениеsmувеличивается на результат деленияuна 10. После этого функция возвращает значениеsm. - Во второй функции
summобъявлены три переменные:fтипаfile of integer(файл целых чисел),aиiоба типаinteger(целое). Функция не принимает аргументов. Внутри циклаforгенерируется случайное целое числоaот 1 доn(не включаяn), затем оно записывается в файлfи выводится на экран. После этого файл очищается и сбрасывается буфер. - В основной функции
mainобъявлены две переменные:fиaоба типаinteger. Функция читает файлdata.dat, где записаноnцелых чисел, затем в циклеwhileчитается следующее число из файла, проверяется сумма его цифр с помощью функцииsummи если она большеa, то число выводится на экран. После этого файл закрывается и сбрасывается буфер.