Помогите решить задачку, пожалуйста.
Отряд солдат окружен превосходящими силами противника. Надежда на победу без подкрепления исключается, однако для прорыва из лагеря имеется одна лошадь. Солдаты решабт выбрать одного человека и послать его за помощью. Они становятся в круг и из шляпы выбирается число N и одно из их имен. Производится счет счет по часовой стрелке по кругу, начиная с солдата с выбранным именем. Когда счетчик достигает N, соответвующий солдат удаляется из круга, а счет продолжается снова, начиная со следующего солдата. Последний оставшийся в круге солдат посылается за подмогой. Определите порядок удаления солдат из круга и имя оставшкгося солдата.
Заранее благодарен.
Ищи по форуму. Была нужная тебе программа, только с другим описанием... Она была под названием "Казнь"...
попробовал ради интереса решить ... заняться вообще нечем, моя верси про пиво )) Если что не так, поправьте :
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.
klem4,
а зачем это ты каждый раз пересчитываешь
repeat
n:=random(count)+1; { <--- вот это ? }
ааа... нужно однаковое N видимо, я просто недопонял.