Получить из содержащихся в программе чисел заданную сумму - 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 без последнего символа '+'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д