Определить вариант покупки, чтобы деньги были истрачены полностью, а количество предметов было наибольшим - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Определить вариант покупки,чтобы деньги были истрачены полностью,а количество предметов было наибольшим: Ученику поручено купить на данную сумму как можно больше линеек и карандашей: простых и цветных. Известно,что линейка стоит А р., а карандаши - цветной и простой соответственно В р., и С р.,

Решение задачи: «Определить вариант покупки, чтобы деньги были истрачены полностью, а количество предметов было наибольшим»

textual
Листинг программы
var s:integer;
    a,b,c,
    i,j,k:integer;
    s1,s2,s3,tmp:string;
    f:boolean;
begin
    write('линейки, карандаши цветные, простые: ');readln(a,b,c);
    write('сумма = ');readln(s);
    s1:=' лиинейки: ';s2:=' карандаши цветные: ';s3:=' карандаши простые: ';
    if a<b then begin a:=a+b;b:=a-b;a:=a-b;tmp:=s1;s1:=s2;s2:=tmp end;
    if b<c then begin b:=b+c;c:=b-c;b:=b-c;tmp:=s2;s2:=s3;s3:=tmp end;
    if a<b then begin a:=a+b;b:=a-b;a:=a-b;tmp:=s1;s1:=s2;s2:=tmp end;
    k:=0;f:=true;
    while f and(k<=s) do
     begin
      j:=0;
      while f and(j<=s) do
       begin
        i:=0;
        while f and(i<=s) do
         begin
          if i*c+j*b+k*a=s 
           then begin f:=false; writeln(s3,i,s2,j,s1,k) end;
          inc(i)
         end;
        inc(j)
       end;
      inc(k)
     end;
   if f then writeln('вариант покупки,чтобы деньги были истрачены полностью не возможен')
end.

Объяснение кода листинга программы

  1. Ввод начальных данных:
    • Переменные a, b, c получают значения количества предметов каждого вида, введенных пользователем.
    • Переменная s получает значение суммы денег, которую пользователь готов потратить.
    • Переменные s1, s2, s3 получают строковые значения для удобства вывода информации на экран.
    • Переменная f устанавливается в true, чтобы запустить цикл поиска варианта покупки.
  2. Поиск варианта покупки:
    • Цикл while запускается до тех пор, пока f и значение переменной k не превышают значение переменной s.
    • Внутри цикла while находится еще один цикл while, который итерируется до тех пор, пока f и значение переменной j не превышают значение переменной s.
    • Внутри второго цикла while находится еще один цикл while, который итерируется до тех пор, пока f и значение переменной i не превышают значение переменной s.
    • Внутри третьего цикла while проверяется, равен ли текущий суммарный счет ic + jb + k*a значению переменной s.
    • Если условие выполняется, то f устанавливается в false, чтобы выйти из всех циклов, и выводится информация о найденном варианте покупки.
    • Если условие не выполняется, то значение переменной i увеличивается на 1.
  3. Вывод сообщения:
    • Если цикл поиска варианта покупки не дал результатов, то выводится сообщение о том, что вариант покупки, чтобы деньги были истрачены полностью, не возможен.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы