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

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

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

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

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

textual
Листинг программы
program TwentyOne;
 
type
  TWeight = array[0..8] of integer;
const
  CardWeight: TWeight = (6, 7, 8, 9, 10, 2, 3, 4, 11);
type
  TCardName = array[0..8] of string;
const
  CardName: TCardName = ('"6"', '"7"', '"8"', '"9"', '"10"', '"Jack"',
    '"Queen"', '"King"', '"Ace"');
 
var
  Combination, Mask: word;
  Sum, i: integer;
begin
  for Combination := 0 to (1 shl 9) - 1 do
  begin
    Sum  := 0;
    Mask := 1;
    for i := 0 to 8 do
    begin
      if Mask and Combination <> 0 then
        Sum := Sum + CardWeight[i];
      Mask := Mask shl 1;
    end;
    if Sum = 21 then
    begin
      Mask := 1;
      for i := 0 to 8 do
      begin
        if Mask and Combination <> 0 then
          Write(' ', CardName[i]);
        Mask := Mask shl 1;
      end;
      writeln;
    end;
  end;
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
Похожие ответы