Программа:
program dividers;
var x, i, p: integer;
y: array of integer;
function dividersOf(n: integer; includeNegative: boolean := false):array of integer;
var a: array of integer;
i, k: integer;
begin
k:= 1;
if(n<0) then n:= n*(-1);
for i:= 1 to n
do if(n mod i = 0)
then begin
SetLength(a, k);
a[a.Length-1]:= i;
k:= k+1;
end;
if(includeNegative)
then a:= a.Select(x -> x*(-1)).Sorted.ToArray+a;
dividersOf:= a;
end;
begin
readln(x);
y:= dividersOf(x, true);
p:= y.Length-2;
i:= 0;
writeln('Делители числа ', x, ':');
repeat
write(y[i], ', ');
i:= i+1;
until i=p;
write(y[p+1], '.');
end.
Программа:
program dividers;
var x, i, p: integer;
y: array of integer;
function dividersOf(n: integer; includeNegative: boolean := false):array of integer;
var a: array of integer;
i, k: integer;
begin
k:= 1;
if(n<0) then n:= n*(-1);
for i:= 1 to n
do if(n mod i = 0)
then begin
SetLength(a, k);
a[a.Length-1]:= i;
k:= k+1;
end;
if(includeNegative)
then a:= a.Select(x -> x*(-1)).Sorted.ToArray+a;
dividersOf:= a;
end;
begin
readln(x);
y:= dividersOf(x, true);
p:= y.Length-2;
i:= 0;
writeln('Делители числа ', x, ':');
repeat
write(y[i], ', ');
i:= i+1;
until i=p;
write(y[p+1], '.');
end.
Поделитесь своими знаниями, ответьте на вопрос:
Решение в паскале написать программу, которая уменшнает на 10 введенное с клавиатуры двузначное число, на 100 - если трехзначное. условие окончания программы - введение нулевого числа. уведомление о некорректности данных вывести красным цветом, а про окончание работы - зеленым.
var
n:integer;
begin
repeat
textcolor(15);
Write('n='); Read(n);
if n=0 then begin
textcolor(LightGreen);
Writeln('Работа завершена');
textcolor(15);
end
else
if (n>9) and (n<100) then begin
n:=n-10;
Writeln('Результат: ',n)
end
else
if (n>99) and (n<1000) then begin
n:=n-100;
Writeln('Результат: ',n)
end
else begin
textcolor(LightRed);
Writeln('Недопустимое значение');
end;
until n=0;
ReadKey { для PascalABC.NET можно удалить эту строку }
end.