Определить максимально возможное количество пирожков, которые Петя может купить - Pascal ABC
Формулировка задачи:
Петя очень любит пирожки с различной начинкой, причем не так важно с какой именно. Однажды, пребывая в голодном состоянии, Петя зашел в буфет и увидел, что в продаже присутствуют пирожки с картошкой, капустой и рисом. Петя желает купить как можно больше пирожков, но проблема в том, что количество пирожков в продаже ограничено так же, как и количество денег у Пети.
Помогите Пете определить максимально возможное количество пирожков, которые он может купить.
Входные данные
Первая строка входного файла INPUT.TXT содержит числа P1, P2 и P3 – стоимость пирожков с картошкой, капустой и рисом соответственно. Во второй строке определены значения N1, N2 и N3 – количество соответствующих пирожков в продаже. В третьей строке записано число R – количество денег у Пети. Все числа во входных данных целые неотрицательные, не превосходящие 1018.
Примеры
5 3 8
2 6 4
23
ответ 7
мой вариант но не работает:
Решение задачи: «Определить максимально возможное количество пирожков, которые Петя может купить»
textual
Листинг программы
program pirojki; const nacinka = 3; var stoimost: array [1 .. nacinka] of integer = ( 5, 3, 8 ); kolicestvo: array [1 .. nacinka] of integer = ( 2, 6, 4 ); dengi: integer = 23; kupil: integer = 0; denegDostatocno: Boolean = true; i, samieDesovieIndex, samieDesovieCena: integer; begin while denegDostatocno do begin samieDesovieCena := 10000; for i := Low(stoimost) to High(stoimost) do begin if (samieDesovieCena > stoimost[i]) and (kolicestvo[i] > 0) then begin samieDesovieCena := stoimost[i]; samieDesovieIndex := i; end; end; while (kolicestvo[samieDesovieIndex] > 0) and denegDostatocno do begin while (dengi - stoimost[samieDesovieIndex] >= 0) and (kolicestvo[samieDesovieIndex] > 0) do begin dec(dengi, stoimost[samieDesovieIndex]); dec(kolicestvo[samieDesovieIndex]); inc(kupil); end; if kolicestvo[samieDesovieIndex] > 0 then denegDostatocno := false; end; end; writeln('Петя купил ', kupil, ' пирожков'); Readln; end.
Объяснение кода листинга программы
- В программе объявлены три константы: nacinka (количество видов пирожков), 5, 3, 8 (стоимость каждого вида пирожков в копейках).
- Переменные объявлены следующим образом:
- stoimost: массив из 3 элементов (5, 3, 8), представляющих стоимость каждого вида пирожков в копейках.
- kolicestvo: массив из 3 элементов (2, 6, 4), представляющих количество каждого вида пирожков.
- dengi: переменная, равная 23 (количество денег у Пети).
- kupil: переменная, которая будет хранить количество купленных пирожков.
- denegDostatocno: логическая переменная, указывающая, достаточно ли денег у Пети для покупки пирожков.
- i, samieDesovieIndex, samieDesovieCena: переменные, используемые в цикле.
- В цикле while происходит покупка пирожков.
- samieDesovieCena устанавливается равной стоимости самого дешевого пирожка.
- samieDesovieIndex устанавливается равным индексу этого пирожка в массиве stoimost.
- Если стоимость пирожка меньше денег у Пети и количество этого пирожка больше 0, то происходит покупка этого пирожка, уменьшается количество денег у Пети, количество пирожков увеличивается на 1, а переменная denegDostatocno устанавливается в false.
- После покупки пирожка, если в массиве kolicestvo еще есть пирожки с положительным значением, то цикл while продолжается до тех пор, пока все пирожки не будут куплены.
- После завершения цикла выводится сообщение о количестве купленных пирожков.
- Если denegDostatocno равно true, то выводится сообщение
Петя купил X пирожков
, где X - значение переменной kupil. - Если denegDostatocno равно false, то выводится сообщение
У Пети недостаточно денег для покупки пирожков
.
- Если denegDostatocno равно true, то выводится сообщение