Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Решение задач на Pascal. Форум 2
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]
Модераторы: paradise, KMA
  

Dale



Участник

Lenin , что вы паритесь? Какие на фиг наброски? Они никому здесь не нужны. Задачи элементарные.
Вроде вы говорили, что первая задача решена? Тогда осталась всего одна задача с файлами. Тогда вопрос: что значит "создать файл?" Программно или в блокноте?
И все ли вам понятно со второй задачей?


(Сообщение отредактировал Dale 24 июня 2009 19:54)

Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 24 июня 2009 19:52 | IP
Dale



Участник


Цитата: anton94 написал 24 июня 2009 10:24
Игра "Камень ножницы бумага". Играют 3 игрока. Кмень тупит ножницы, ножницы режут бумагу, бумага кроет камень. Нужно смоделировать задачу игры с помощью модуля CRT. Помогите, срочно надо!!!плиз.
(Сообщение отредактировал anton94 24 июня 2009 11:10)


Что должно получится в результате? Комп играет сам с собой?
Что касается решения задачи, то у меня такие мысли: создать подпрограмму, которая выясняет, что сильнее из двух вариантов; когда варианта три, возможны три случая:
1) все три игрока поставили разные варианты: в этом случае переигровка;
2) Все поставили одно и то же - переигровка
3) Два одинаковых варианта и один отличается: проверить, что сильнее: если одиночный, то ему первое место, если нет - то последнее, третье.
Далее играют два оставшихся, кто выиграет, получает наивысшее незанятое место.

Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 24 июня 2009 20:09 | IP
Dale



Участник

Вот, набросал "методом лома" реализацию, вроде работает, проверьте
Code Sample:
 
uses crt;
const KAM=1; HO=2; bum=3;
type tun=1..3;{1=kam,2-HO,3-BUM}
var mas:array[1..3] of tun;
 mesto:array[1..3] of 0..3;{0 - если место свободно}
 mas2:array[1..2] of tun;{массив оставшихся}
   i,j:integer;
   f:boolean;
   BbID:1..3;
   CP:1..3;
function opr(a,b:tun):boolean;{true, если а сильнее}
var rez:boolean;
begin

if a=KAM then
case b of
 HO: rez:=true;
 BUM: rez:=false;
end;
if a=HO then
case b of
 KAM: rez:=false;
 BUM: rez:=true;
end;

if a=BUM then
case b of
  KAM:rez:=true;
   HO:rez:=false;
end;
opr:=rez;
end;{function}

begin
clrscr;
repeat{пока не будут два одинковых}
i:=1;
while i<=3 do begin
 writeln(i, ' -й игрок ставит: (KAM - 1, HO - 2, BUM - 3)');
 case readkey of
   '1':begin
       mas[ i ]:=KAM;
       writeln(mas[ i ]);
       end;
   '2':begin
       mas[ i ]:=HO;
       writeln(mas[ i ]);
       end;
   '3':begin
       mas[ i ]:=bum;
       writeln(mas[ i ]);
       end;
   else  i:=i-1;
 end;
 i:=i+1;
end;
{Проверяем}
f:=(mas[1]=mas[2]) or (mas[1]=mas[3]) or (mas[2]=mas[3]);
f:=f and not((mas[1]=mas[2]) and (mas[1]=mas[3]) and (mas[2]=mas[3]));
if not f then writeln('Еще раз');
until f;
{Обнуляем места}
for i:=1 to 3 do mesto[ i ]:=0;
{ищем кто выделяется}
if (mas[1]<>mas[2]) and (mas[1]<>mas[3]) then BbID:=1;
if (mas[2]<>mas[1]) and (mas[2]<>mas[3]) then BbID:=2;
if (mas[3]<>mas[1]) and (mas[3]<>mas[2]) then BbID:=3;
{Присуждаем ему законное место}
{С чем сравнивать?}
case BbID of
1:CP:=2;
2:CP:=3;
3:CP:=1;
end;
if opr(mas[BbID],mas[CP]) then begin
 mesto[1]:=BbID;
 writeln('Игрок номер ',BbID,' теперь занимает первое место');
end else begin
 writeln('Игрок номер ',BbID,' теперь занимает последнее место');
 mesto[3]:=BbID;
end;
{Теперь играют два оставшихся}
{Нужны индексы двоих оставшихся.
А не забить ли их в еще один массив?}
i:=1;
j:=1;
while i<=3 do begin
       if i<>BbID then begin
        mas2[ j ]:=i;
        j:=j+1;
        end;
       i:=i+1;
end;{while}


repeat{пока не будут два разных}
i:=1;
while i<=2 do begin

 writeln(mas2[ i ], ' -й игрок ставит: (KAM - 1, HO - 2, BUM - 3)');
 case readkey of
   '1':begin
       mas[mas2[ i }}:=KAM;
       writeln(mas[ i ]);
       end;
   '2':begin
       mas[ i ]:=HO;
       writeln(mas[ i ]);
       end;
   '3':begin
       mas[ i ]:=bum;
       writeln(mas[ i ]);
       end;
   else  i:=i-1;
  end; {case}

 i:=i+1;
end;   {while}
{Проверяем}
f:=mas[mas2[1}}<>mas[mas2[2}};
 if not f then writeln('Еще раз');
until f;

{Разбиваем оставшиеся места}
if opr(mas[mas2[1}},mas[mas2[2}}) then begin
{Ищем первое свободное место. Как? Если первое место не ноль, то
свободно второе, туда и вписываем}
    if mesto[1]<>0 then begin
             mesto[2]:=mas2[1];
             mesto[3]:=mas2[2];
    end else begin
             {Если первое место ноль, то занято третье}
             mesto[1]:=mas2[1];
             mesto[2]:=mas2[2];
    end;{if mesto}
end  else begin
        if mesto[1]<>0 then begin
           mesto[2]:=mas2[2];
           mesto[3]:=mas2[1];
         end else begin
           {Если первое место ноль, то занято третье}
           mesto[1]:=mas2[2];
           mesto[2]:=mas2[1];
         end;
 end;{if opr}

{Выводим таблицу рекордов}
writeln('========================');
for i:=1 to 3 do writeln(i,' место занял ',mesto[ i ],' - й игрок');
writeln('========================');
readkey;

end.



Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 25 июня 2009 0:31 | IP
Dale



Участник

Некоторые скобки не  отобразились, качайте
внешняя ссылка удалена
Что-то мне подсказывает, что можно было сделать проще, но мне было лень думать

Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 25 июня 2009 0:36 | IP
Lenin



Новичок

Dale, решите пожалуйста задачи, а я уже сам както из буду подшивать в меню. И ещё большая просьба, составьте блок схемы.

Всего сообщений: 12 | Присоединился: май 2009 | Отправлено: 27 июня 2009 11:38 | IP
Dale



Участник

Lenin  вы вообще читаете что я пишу и спрашиваю?
Выше я четко написал, что куда подшивать.
1-я задача у вас была(выше)
2-я задача решена мной(выше)
по третей задаче у меня есть вопрос(выше)

Что касается блок-схем, в качестве помощи могу предложить составить бс к чему-нибудь одному:
1) к одной из задач
2) К меню

Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 27 июня 2009 12:44 | IP
Lenin



Новичок

Первой задачи у меня нету, потерял. А по третьей, нада создать файл програмно, типо когда в паскале решает эту задачу создается файл с записью!

Всего сообщений: 12 | Присоединился: май 2009 | Отправлено: 27 июня 2009 13:57 | IP
Oxik WAR



Новичок

здраствуйте!!! помогите пожалуйста решить задачи:
1. на плоскости заданы своими целочисленными координатами n точек. найти всевозможные группы по 3,4 ... точки,лежащие на одной прямой.

Всего сообщений: 9 | Присоединился: июнь 2009 | Отправлено: 27 июня 2009 20:07 | IP
Oxik WAR



Новичок

2. задан список n абитуриентов. сформулировать из них случайным образом m=ent(n/25 + 0,999) групп так чтобы количество абитуриентов в разных группах отличалось не более чем на 1 и не превышало 25. вместо фамилий можно использовать шифры.

Всего сообщений: 9 | Присоединился: июнь 2009 | Отправлено: 27 июня 2009 20:13 | IP
oxxxik



Новичок

помогите пожалуйста хотя бы с чего начать решение этих задач:
Детерминированная задача о раскрое. Стержень длинной L0 нужно разрезать на стержни длинной L1,L2,...,Lk., количество отрезков каждого типа не ограниченно. найти все способы раскроя и вычислить неиспользованный остаток в каждом способе.
Вероятностная задача о раскрое: как в предыдущей задаче найти m различных случайно выбранных способов раскроя.

Всего сообщений: 3 | Присоединился: июнь 2009 | Отправлено: 27 июня 2009 20:37 | IP

Эта тема закрыта, новые ответы не принимаются

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]

Форум работает на скрипте © Ikonboard.com