Формирование массива, элементами которого являются числа, сумма цифр которых равна K и которые не больше N - PascalABC.NET
Формулировка задачи:
Даны натуральные числа К и N. Составить программу формирования массива A, элементами которого являются числа, сумма цифр которых равна K и которые не больше N.
Сделать программу надо с процедурой или с функцией.
И составить блок схему .
Помогите пожалуйста
Решение задачи: «Формирование массива, элементами которого являются числа, сумма цифр которых равна K и которые не больше N»
textual
Листинг программы
uses crt;
procedure pr;
var s,k,su,n,i:integer;
a:array[1..100] of integer;
label x,y1,y2;
begin
s:=0;su:=0;i:=1;
write('Vvedite chislo - ');y1:read(k);
if k<0 then
begin
write('Vvedite polojitelnoe chislo - ');
goto y1;
end;
write('Vvedite N - ');y2:read(n);
if n<0 then
begin
write('Vvedite polojitelnoe N - ');
goto y2;
end;
repeat
x:s:=random(n)+1;
su:=su+s;
if su>k then
begin
su:=su-s;
goto x;
end
else
begin
a[i]:=s;
write(a[i]:3);
inc(i);
end;
until su=k;
writeln;
end;
begin
randomize;
pr;
end.
Объяснение кода листинга программы
- Установка начального значения переменных s, k, su, n, i.
- Ввод пользователем числа k и проверка на корректность ввода.
- Ввод пользователем числа n и проверка на корректность ввода.
- Повторение цикла до тех пор, пока сумма цифр элемента массива не станет равной k.
- Генерация случайного числа в диапазоне от 1 до n.
- Добавление этого числа к сумме цифр.
- Если сумма цифр превышает k, то это число вычитается из суммы и цикл повторяется.
- Если сумма цифр равна k, то число добавляется в массив и выводится на экран.
- Цикл повторяется до тех пор, пока сумма цифр не станет равной k.
- После завершения цикла выводится на экран.