В ЧЕМ ПРОБЛЕМА?МНЕ НУЖНО РЕШИТЬ ВОТ ЭТУ ЗАДАЧУ ТОЛЬКО ЦИКЛАМИ И ФУНКЦИЕЙ:
Напишите программу, которая вводит натуральное число и находит все числа на отрезке [0, N], сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8 и 9 (например, число 9). Используйте функцию для вычисления суммы цифр числа.
program q;
function dl(n:integer):integer;
var b,r:integer;
begin
b:=0;
while n<>0 do begin
b:=b + n mod 10;
n:=n div 10;
end;
dl:=b;
end;
var b,r,n,f,a,c,h,j,k,u:integer;
begin
readln(n);
for f:=0 to n do begin
c := dl(f);
for a:=2 to 9 do
if c= dl(a* f) then writeln(c);
end;
end.
nmax = 99;
var
i, n, k, s: integer;
a: array[1..nmax] of integer;
begin
Randomize;
Write('Введите количество элементов массива (1-99)');
Readln(n);
Write('Введите число k ');
Readln(k);
Writeln('Исходный массив');
s := 0;
for i := 1 to n do
begin
a[i] := Random(98) + 1;
Write(a[i]:3);
if (a[i] mod k) = 0 then s := s + a[i]
end;
Writeln(#13#10, 'Сумма элементов, кратных ', k, ' равна ', s)
end.
Тестовое решение:
Введите количество элементов массива (1-99)12
Введите число k 3
Исходный массив
34 63 18 81 91 83 83 80 10 59 81 74
Сумма элементов, кратных 3 равна 243
a, b, c: real;
begin
Write('Введите через пробел три числа -> ');
Readln(a, b, c);
if ((a > b) and (b > c)) or ((a < b) and (b < c)) then
begin a := 2 * a; b := 2 * b; c := 2 * c end
else
begin a := -a; b := -b; c := -c end;
writeln('Новые значения чисел: ', a, ', ', b, ', ', c)
end.
Тестовое решение:
Введите через пробел три числа -> 18 5 -3
Новые значения чисел: 36, 10, -6
Введите через пробел три числа -> -6 0 5
Новые значения чисел: -12, 0, 10
Введите через пробел три числа -> 11 20.7 4.9
Новые значения чисел: -11, -20.7, -4.9