Lesosib.Ru | Форум | Регистрация | Вход | PDA
 
Вторник, 26 Ноября 2024, 09:57:18
Приветствую Вас Гость | RSS
Новые сообщения · Участники · Правила форума · Поиск
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: STEFANI  
Все его знают
politsa_avДата: Пятница, 22 Февраля 2013, 12:15:45 | Сообщение #21
Группа: Удаленные
Уважаемые, кому не трудно, помогите написать прогу на паскале... "Камень ножницы бумага" на четверых. В циклах запуталась.
 
RageДата: Пятница, 22 Февраля 2013, 12:35:13 | Сообщение #22
Группа: Удаленные
Цитата (koxacb_anna)
кому не трудно

Камень, ножницы, бумага, правда, на троих...
 
freedomДата: Пятница, 22 Февраля 2013, 12:42:51 | Сообщение #23
freedom
Группа: Проверенные
Сообщений: 1557
Д.рег: 25 Марта 2007
Статус: Offline
Откуда: Лесосибирск
koxacb_anna,
Код

var a: array [1..4] of integer;
i,j: integer;
begin
    for i:=1 to 4 do begin
      a[i]:=random(2);
      case a[i] of
        0:writeln(i,' igrok - камень');
        1:writeln(i,' igrok - ножницы');
        2:writeln(i,' igrok - бумага');
      end;
    end;
end;



Осталось определить победителя, честно сказать забыл как играть :(

Получается если показали одно и тоже либо все разное, то переигрывается?


Сообщение отредактировал freedom - Пятница, 22 Февраля 2013, 12:44:20
 
politsa_avДата: Пятница, 22 Февраля 2013, 12:50:58 | Сообщение #24
Группа: Удаленные
Маленькое уточнение - данные вводить нужно с клавиатуры.
Цитата (freedom)
забыл как играть

Камень побеждает ножницы. Ножницы побеждают бумагу. Бумага побеждает камень
Переигрывают только тогда, когда допустим 2-е показали бумагу, а 2-е ножницы - переигрывают первые. На проигравшего.


Сообщение отредактировал koxacb_anna - Пятница, 22 Февраля 2013, 12:54:05
 
politsa_avДата: Пятница, 22 Февраля 2013, 12:53:17 | Сообщение #25
Группа: Удаленные
Цитата (Rage)
правда, на троих...
да да, видела уже это решение. Но на 4-х нужно.
 
yorinoДата: Среда, 27 Февраля 2013, 17:21:37 | Сообщение #26
Группа: Удаленные
Я сделал это!!! )))

Код

program www;
var
rnd: integer;
a: array [1..4] of integer;
c: array [1..4] of integer;
i,j: integer;
rez: array[0..3, 0..3] of integer;
povtor,kol, pobeditel: integer;

procedure Proverka();
var i,k,n,b: integer;
begin
k:=0; n:=0; b:=0;
  for i:=1 to 4 do
  case a[i] of
  0: inc(k);
  1: inc(n);
  2: inc(b);
  end;

  if (k>0) and (n>0) and (b>0) then
  povtor:=1
  else
  povtor:=0;

end;

procedure vibor();
var i,j,max: integer;
begin
   for i:=1 to 3 do
     begin
     for j:=i+1 to 4 do
      begin
       if rez[a[i],a[j]]=a[i] then begin inc(c[i]);  end;
       if rez[a[i],a[j]]=a[j] then begin inc(c[j]);  end;
      end;
     end;

max:=c[1];
for i:=2 to 4 do
if c[i]>max then max:=c[i];

kol:=0;
for i:=1 to 4 do
begin
if c[i]=max then
begin inc(kol); pobeditel:=i; end
else
if povtor<>1 then
a[i]:=3;
end;

end;

begin
rez[0,0]:=0; rez[1,0]:=0; rez[2,0]:=2; rez[3,0]:=0;
rez[0,1]:=0; rez[1,1]:=1; rez[2,1]:=1; rez[3,1]:=1;
rez[0,2]:=2; rez[1,2]:=1; rez[2,2]:=2; rez[3,2]:=2;
rez[0,3]:=0; rez[1,3]:=1; rez[2,3]:=2; rez[3,3]:=-1;

c[1]:=0; c[2]:=0; c[3]:=0; c[4]:=0;
povtor:=1;
rnd:=0;
for i:=1 to 4 do
a[i]:=0;
kol:=4;
  randomize;

  while (povtor=1) do
  begin
  inc(rnd);
  writeln('Раунд №',rnd,':');

    for i:=1 to 4 do
    begin
    if a[i]<>3 then
    a[i]:=random(1000) mod 3;
     case a[i] of
      0: writeln(i,'-й игрок: камень');
      1: writeln(i,'-й игрок: ножницы');
      2: writeln(i,'-й игрок: бумага');
     end;
    end;
  Proverka();
  if povtor<>1 then
  begin
  vibor();
  if kol<>1 then
  povtor:=1;
  end;
  writeln();

  end;

  writeln('Победил игрок №', pobeditel);

readln;

end.


Можно впринципе на любое количество раскидать )) только долго делаться будет. Если надо будет объяснить, пиши
 
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:


Copyright Evgeniy Rybin © 2024