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

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

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

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

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

textual
Листинг программы
  1. var s:integer;
  2.     a,b,c,
  3.     i,j,k:integer;
  4.     s1,s2,s3,tmp:string;
  5.     f:boolean;
  6. begin
  7.     write('линейки, карандаши цветные, простые: ');readln(a,b,c);
  8.     write('сумма = ');readln(s);
  9.     s1:=' лиинейки: ';s2:=' карандаши цветные: ';s3:=' карандаши простые: ';
  10.     if a<b then begin a:=a+b;b:=a-b;a:=a-b;tmp:=s1;s1:=s2;s2:=tmp end;
  11.     if b<c then begin b:=b+c;c:=b-c;b:=b-c;tmp:=s2;s2:=s3;s3:=tmp end;
  12.     if a<b then begin a:=a+b;b:=a-b;a:=a-b;tmp:=s1;s1:=s2;s2:=tmp end;
  13.     k:=0;f:=true;
  14.     while f and(k<=s) do
  15.      begin
  16.       j:=0;
  17.       while f and(j<=s) do
  18.        begin
  19.         i:=0;
  20.         while f and(i<=s) do
  21.          begin
  22.           if i*c+j*b+k*a=s
  23.            then begin f:=false; writeln(s3,i,s2,j,s1,k) end;
  24.           inc(i)
  25.          end;
  26.         inc(j)
  27.        end;
  28.       inc(k)
  29.      end;
  30.    if f then writeln('вариант покупки,чтобы деньги были истрачены полностью не возможен')
  31. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы