Получить из содержащихся в программе чисел заданную сумму - PascalABC.NET
Формулировка задачи:
Программа содержит числа: X1, X2, X3, X4, X5.
Программа получает число S от пользователя. Мы должны получить это число из чисел X1, X2, X3, X4, X5.
Пожалуйста, напишите код для этой операции.
P.S. Если число не получается из содержащих в программе чисел, вывести на экран слово "Операция невозможна.".
Решение задачи: «Получить из содержащихся в программе чисел заданную сумму»
textual
Листинг программы
- Const
- N = 5;
- M : array[1..N] of Integer = (50,100,500,1000,5000);
- Function Check(A : Integer) : String;
- Var i : Byte;
- Begin
- If A=0 then Check:='' else
- Begin
- I:=N;
- While (i>0) and (M[i]>A) do Dec(i);
- If i=0 then Check:='*' else Check:=M[i].ToString+'+'+Check(A-M[i]);
- end;
- end;
- Begin
- Var S:=1150;
- Var St:String:=Check(S);
- If Pos('*',St)>0 then St:='Операция невозможна.' else Delete(St,Length(St),1);
- Writeln(St);
- End.
Объяснение кода листинга программы
- Программа начинается с объявления констант и переменных.
- N = 5 - количество элементов в массиве M.
- M[1..N] = (50,100,500,1000,5000) - массив чисел.
- Check(A) - функция, которая проверяет можно ли получить сумму A из чисел массива M.
- Если A=0, то Check возвращает пустую строку.
- Если A не равно 0, то выполняется следующий код:
- I := N - счетчик, который уменьшается, пока не найдется число, которое больше или равно A.
- Пока i больше 0 и M[i] больше A, уменьшается i.
- Если i равно 0, то Check возвращает '*', иначе Check возвращает строку, которая состоит из числа M[i], плюса и строки Check(A-M[i]).
- В основной части программы:
- S := 1150 - сумма, которую необходимо получить.
- St := Check(S) - значение функции Check, которое сохраняется в переменной St.
- Если в St есть '*', то St заменяется на 'Операция невозможна.', иначе удаляется последний символ '+' из St.
- St выводится на экран.
- Если в St есть '*', то выводится 'Операция невозможна.', иначе выводится St без последнего символа '+'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д