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

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

program biki_i_korovi;//v.1.0 {Здраствуйте,я уже совсем отчаялся.....Помогите !!! Как написать цикл ,чтобы он выполнял все эти процедуры пока количество коров и быков не стало 4 ??????????}
 
uses
  crt;
 
var
  a, b: array [1..4] of integer;
  i: 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);
  
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);
  
  
end;
 
 
begin
 
 
  
  zag_hisl;
  
  writeln('Здраствуйте это супер интеллектуальная игра " Быки и коровы"'); 
  writeln('Правила игры очень просты. '); 
  writeln('1. Компьютер загадывает четырёхзначное число. Цифры в числе не повторяются. '); 
  writeln('2. Вы пытаетесь это число угадать, называя наугад (и не очень) свои варианты загаданного числа. '); 
  writeln('3. На каждую вашу попытку, компьютер Вам сообщает кое-что про соответствие между цифрами загаданного числа'); 
  writeln(' и вашего варианта, а именно - количество "быков" и "коров": '); 
  writeln('"Быки" - это те цифры вашего числа, расположение которых поразрядно совпадает'); 
  writeln(' с цифрами загаданного числа; '); 
  writeln('"Коровы" - это те цифры вашего числа, которые присутствуют в загаданном '); 
  writeln(' числе'); 
  writeln('Если вы поняли правила нажмите Enter '); 
  readln;
  clrscr;
  for i := 1 TO 100 DO
  begin
    VVOD_CHISEL;
    BIKI;
    KOROVI;
    WRITELN('ЕСЛИ У ВАС 4 БЫКА И 4 КОРОВЫ-ВЫ ПОБЕДИТЕЛЬ ,ПРОСТО ВВЕДИТЕ ////');
  end;
end.

Код к задаче: «Быки и коровы - 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.

11   голосов, оценка 4.182 из 5


СОХРАНИТЬ ССЫЛКУ