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
|
|
|