Программа должна определить, какие сочетания карт дают в сумме вес 21 - Free Pascal

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

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

4. Есть такая тюремная игра. «Двадцать одно» называется. Каждая карта в этой игре имеет свой вес. Карты без картинок начинаются с «шестерки» и имеют вес, соответствующий номеру. Например, «де-вятка» имеет вес 9. Карты с картинками имеют такие веса. «Валет» - 2, «Дама» - 3, «Король» - 4. «Туз» весит 11. Пусть в колоде только одна масть. Программа должна определить, какие сочетания карт дают в сумме вес 21.

Решение задачи: «Программа должна определить, какие сочетания карт дают в сумме вес 21»

textual
Листинг программы
  1. program TwentyOne;
  2.  
  3. type
  4.   TWeight = array[0..8] of integer;
  5. const
  6.   CardWeight: TWeight = (6, 7, 8, 9, 10, 2, 3, 4, 11);
  7. type
  8.   TCardName = array[0..8] of string;
  9. const
  10.   CardName: TCardName = ('"6"', '"7"', '"8"', '"9"', '"10"', '"Jack"',
  11.     '"Queen"', '"King"', '"Ace"');
  12.  
  13. var
  14.   Combination, Mask: word;
  15.   Sum, i: integer;
  16. begin
  17.   for Combination := 0 to (1 shl 9) - 1 do
  18.   begin
  19.     Sum  := 0;
  20.     Mask := 1;
  21.     for i := 0 to 8 do
  22.     begin
  23.       if Mask and Combination <> 0 then
  24.         Sum := Sum + CardWeight[i];
  25.       Mask := Mask shl 1;
  26.     end;
  27.     if Sum = 21 then
  28.     begin
  29.       Mask := 1;
  30.       for i := 0 to 8 do
  31.       begin
  32.         if Mask and Combination <> 0 then
  33.           Write(' ', CardName[i]);
  34.         Mask := Mask shl 1;
  35.       end;
  36.       writeln;
  37.     end;
  38.   end;
  39. end.

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

  1. Объявлены две константы: CardWeight и CardName. CardWeight содержит веса карт в виде массива целых чисел, а CardName содержит названия карт в виде массива строк.
  2. Объявлены следующие переменные: Combination, Mask, Sum и i. Combination и Mask являются словарными переменными, а Sum и i - целочисленными.
  3. Запускается цикл, который перебирает все возможные комбинации карт (от 0 до 2^9-1), начиная с 0.
  4. Для каждой комбинации в цикле начинается новый цикл, который перебирает все карты (от 0 до 8). Если соответствующая карта присутствует в комбинации (маска карты не равна 0), то ее вес добавляется к сумме.
  5. После завершения второго цикла проверяется, равна ли сумма 21. Если да, то выводится название каждой карты, входящей в комбинацию.
  6. Если сумма не равна 21, то цикл продолжается со следующей комбинацией.

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


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

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

10   голосов , оценка 4.3 из 5

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

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

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