Программа должна определить, какие сочетания карт дают в сумме вес 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.
Объяснение кода листинга программы
- Объявлены две константы:
CardWeight
иCardName
.CardWeight
содержит веса карт в виде массива целых чисел, аCardName
содержит названия карт в виде массива строк. - Объявлены следующие переменные:
Combination
,Mask
,Sum
иi
.Combination
иMask
являются словарными переменными, аSum
иi
- целочисленными. - Запускается цикл, который перебирает все возможные комбинации карт (от 0 до 2^9-1), начиная с 0.
- Для каждой комбинации в цикле начинается новый цикл, который перебирает все карты (от 0 до 8). Если соответствующая карта присутствует в комбинации (маска карты не равна 0), то ее вес добавляется к сумме.
- После завершения второго цикла проверяется, равна ли сумма 21. Если да, то выводится название каждой карты, входящей в комбинацию.
- Если сумма не равна 21, то цикл продолжается со следующей комбинацией.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д