Две программы на Паскале (файлы в формате pas или txt): одна программа через цикл While другая через цикл Repeat. Обе программы должны выдавать на экран все делители целого числа, введённого пользователем, а также их количество (делителей). Например, пользователь задал число 6. Обе программы должны вывести: "1 2 3 6; всего делителей - 4".
Я не могу загрузить файлы, но вот коды. Создай файлы и вставь
repeat_.pas:
program repeat_;
var n, k, counter: Integer;
begin
ReadLn(n);
k := 1;
counter := 0;
repeat
if (n mod k = 0) then
begin
counter += 1;
if n <> k then
Write(k, ' ')
else
Write(k, '; ');
end;
k += 1;
until n < k;
WriteLn('всего делителей - ', counter);
end.
while_.pas:
program while_;
var n, k, counter: Integer;
begin
ReadLn(n);
k := 1;
counter := 0;
while (k <= n) do
begin
if (n mod k = 0) then
begin
counter += 1;
if n <> k then
Write(k, ' ')
else
Write(k, '; ');
end;
k += 1;
end;
WriteLn('всего делителей - ', counter);
end.
Объяснение:
Программа для while
program whil;
var x,i,n:integer;
y:real;
begin
i:=1;
n:=0;
Writeln ('Введите число для которого необходимо определить делители: ');
Read (x);
WHILE (i<=x) DO
begin
if (x mod i=0) then
begin
y:=x/i;
n:=n+1;
Writeln (n,' делитель числа',x,' : ',y );
end;
i:=i+1
end;
Writeln ('Число делителей числа', x, ' : ',n)
end.
Программа для repeat
program repeats;
var x,i,n:integer;
y:real;
begin
i:=0;
n:=0;
Writeln ('Введите число для которого необходимо определить делители: ');
Read (x);
repeat
i:=i+1;
begin
if (x mod i=0) then
begin
y:=x/i;
n:=n+1;
Writeln (n,' делитель числа',x,' : ',y );
end;
end;
until i>=x;
Writeln ('Число делителей числа', x, ' : ',n)
end.