Быки и коровы - Pascal ABC

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

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

Решение задачи: «Быки и коровы»

textual
Листинг программы
program biki_i_korovi;//v.1.0 
 
uses
  crt;
 
var
  a, b: array [1..4] of integer;
  i,jj,ii: integer;
  ak:integer;
 
procedure zag_hisl;
var
  a: array [1..4] of integer;
  i, j, num: integer;
  flag: boolean;
begin
  randomize;
  for i := 1 to 4 do 
  begin
    flag := true;
    while flag do
    begin
      num := random(9);
      flag := false;
      for j := 1 to i - 1 do
        if a[j] = num then 
        begin
          flag := true;
          break;
        end;
    end;
    a[i] := num;
  end;
  writeln(a);
  for i := 1 to 4 do 
    b[i] := a[i];
end;
 
procedure vvod_chisel;
var
  num, i, io: integer;
  s: array[1..4] of integer;
begin
  Writeln('vvedite 4-h znachnnoe chislo');
  readln(num);
  s[4] := num mod 10;
  io := num div 10;
  for i := 3 downto 1 do 
  begin
    s[i] := io mod 10;
    io := io div 10;
  end;
  for i := 1 to 4 do
    a[i] := s[i];
end;
 
procedure korovi;
var
  korovin, i: integer;
begin
  korovin := 0;
  for i := 1 to 4 do
  begin
    if b[i] = a[1] then inc(korovin);
  end;
  for i := 1 to 4 do
  begin
    if b[i] = a[2] then inc(korovin);
  end;
  for i := 1 to 4 do
  begin
    if b[i] = a[3] then inc(korovin);
  end;
  for i := 1 to 4 do
  begin
    if b[i] = a[4] then inc(korovin);
  end;
  writeln('Коров=', korovin);
  if korovin=4 then
  ii:=11;
  
end;
 
procedure biki ;
var
  bikin: integer;
begin
  bikin := 0;
  if b[1] = a[1] then
    inc(bikin);
  if b[2] = a[2] then
    inc(bikin);
  if b[3] = a[3] then
    inc(bikin);
  if b[4] = a[4] then
    inc(bikin);
  writeln('Быков=', bikin);
  if bikin=4 then
  jj:=11;
  
  
end;
 
 
begin
 
 
  
  zag_hisl;
  
  writeln('Здраствуйте это супер интеллектуальная игра " Быки и коровы"'); 
  writeln('Правила игры очень просты. '); 
  writeln('1. Компьютер загадывает четырёхзначное число. Цифры в числе не повторяются. '); 
  writeln('2. Вы пытаетесь это число угадать, называя наугад (и не очень) свои варианты загаданного числа. '); 
  writeln('3. На каждую вашу попытку, компьютер Вам сообщает кое-что про соответствие между цифрами загаданного числа'); 
  writeln(' и вашего варианта, а именно - количество "быков" и "коров": '); 
  writeln('"Быки" - это те цифры вашего числа, расположение которых поразрядно совпадает'); 
  writeln(' с цифрами загаданного числа; '); 
  writeln('"Коровы" - это те цифры вашего числа, которые присутствуют в загаданном '); 
  writeln(' числе'); 
  writeln('Если вы поняли правила нажмите Enter '); 
  readln;
  clrscr;
repeat 
    VVOD_CHISEL;
    BIKI;
    KOROVI;
    ak:=ak+1;
    if (jj=11) and (ii=11) then
    ak:=-1; 
until ak<0 ;
end.

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

Этот код представляет собой программу на языке Pascal ABC, которая реализует игру Быки и коровы. В программе используются следующие переменные:

  • a, b: массивы из 4 чисел каждый, которые представляют собой возможные цифры загаданного числа.
  • i, jj, ii: переменные для отслеживания количества быков и коров.
  • ak: переменная для отслеживания общего количества цифр в загаданном числе. Процесс игры реализован через три процедуры:
  • zag_hisl: эта процедура генерирует случайное четырехзначное число и проверяет, сколько цифр в вашем варианте числа совпадают с цифрами загаданного числа.
  • vvod_chisel: эта процедура запрашивает у пользователя четырехзначное число и сохраняет его в массиве s.
  • korovi: эта процедура подсчитывает количество быков и коров в вашем варианте числа. Процедура biki:
  • Сначала проверяется, совпадают ли все цифры вашего варианта числа с цифрами загаданного числа. Если да, то увеличивается счетчик bikin.
  • Затем проверяется, совпадают ли две цифры вашего варианта числа с цифрами загаданного числа. Если да, то увеличивается счетчик bikin.
  • Аналогично проверяется совпадение трех и четырех цифр вашего варианта числа с цифрами загаданного числа. Если да, то увеличивается счетчик bikin.
  • В конце процедуры выводится количество быков и коров. Процедура korovi:
  • Эта процедура работает аналогично процедуре biki, но она проверяет только одну цифру вашего варианта числа с цифрами загаданного числа. Процедура vvod_chisel:
  • Запрашивает у пользователя четырехзначное число и сохраняет его в массиве s. Процедура zag_hisl:
  • Генерирует случайное четырехзначное число и сохраняет его в массиве a.
  • Затем проверяет, сколько цифр в вашем варианте числа совпадают с цифрами загаданного числа.
  • Если совпадают все цифры, то увеличивает счетчик zag_hisl.
  • Если совпадают две или три цифры, то увеличивает счетчик zag_hisl.
  • В конце процедуры выводится количество быков и коров. В конце программы выводится сообщение с просьбой ввести четырехзначное число, после чего начинается цикл игры, который повторяется до тех пор, пока не будет достигнуто условие ak<0.

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


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

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

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