Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача Джозефуса

Автор: DIAMOND 3.07.2005 18:22

Помогите решить задачку, пожалуйста.

Отряд солдат окружен превосходящими силами противника. Надежда на победу без подкрепления исключается, однако для прорыва из лагеря имеется одна лошадь. Солдаты решабт выбрать одного человека и послать его за помощью. Они становятся в круг и из шляпы выбирается число N и одно из их имен. Производится счет счет по часовой стрелке по кругу, начиная с солдата с выбранным именем. Когда счетчик достигает N, соответвующий солдат удаляется из круга, а счет продолжается снова, начиная со следующего солдата. Последний оставшийся в круге солдат посылается за подмогой. Определите порядок удаления солдат из круга и имя оставшкгося солдата.

Заранее благодарен.

Автор: volvo 3.07.2005 18:42

Ищи по форуму. Была нужная тебе программа, только с другим описанием... Она была под названием "Казнь"...

Автор: klem4 3.07.2005 23:24

попробовал ради интереса решить ... заняться вообще нечем, моя верси про пиво smile.gif)) Если что не так, поправьте :

uses crt;
var
soldiers:array[1..10] of string =
('Вова.П','Б.Страуструп','Д.Буш','С.Шнуров','Некто','klem4','Билл гтс','Касперский',
'Н.Вирт','К.Митник');
i,n,Ncount,count:integer;

Begin

clrscr;

randomize;

count:=10;

NCount:=0;

repeat

n:=random(count)+1;

if NCount>=count then NCount:=0;

i:=NCount+1; NCount:=1;

repeat
if i=count then i:=0;
inc(i);
inc(NCount);
until Ncount=n;

NCount:=i;

writeln('Выбыл : ',soldiers[Ncount]);

for i:=NCount to count-1 do
soldiers[i]:=soldiers[i+1];

dec(count);

until count=1;

writeln;

writeln('За пивом сегодня идет : ',soldiers[1]);


readln;
End.



нашел лишнюю проверку if i=count then ... ненужна

Автор: volvo 3.07.2005 23:36

klem4,
а зачем это ты каждый раз пересчитываешь

repeat
n:=random(count)+1; { <--- вот это ? }

По-моему, у тебя будут вообще совершенно случайные результаты...

Автор: klem4 3.07.2005 23:39

ааа... нужно однаковое N видимо, я просто недопонял.