Привет народ! тут вот такая задачка:
должна быть реализованная с помощью двунаправленного списка...пользователь вводит последовательность чисел("номер ребенка в круге") и число (размер считалочки) и начиная с того числа которое он ввел, по часововй стрелочки идет отсчет, то число, на котором останавливает счет-запоминается и удаляется из последовательности и счет продолжается...
вообщем пример: если вводятся числа 1,2,3,4,5,6,7,8,9,10 и размер считалочки 4...то ответ должен быть таким: 4,8,2,7,3,10,9,1,6,5 если Я не ошибся...
Ума не приложу как делать эту прогу, есть только процедура заполнения, но по словам препода она слишком простая... ...
Если кто может, или тут была прогу-помогите ПЛИЗ...
http://forum.pascal.net.ru/index.php?s=&showtopic=13211&view=findpost&p=76992
http://forum.pascal.net.ru/index.php?s=&showtopic=3483&view=findpost&p=31452
(обе реализации - с массивом... На списки попробуй переделать сам...)
Окей, спасиБо огромное... ...
ПРо казнь программу понял туго, да и разбиратсья в ней неохота+ считалочка мне подходит на 100% тока форму вывода надо поменять, чтобы в итоге выводил 1 строчку, или так оставить еще не решил...
В чужих прогах разбираюсь плохо, да и в программировании слабоват, постараюсь конечно, но обещать не могу что получиться-но ПОПРОБУЮ...
Собрал все свои мозги в кучу...что-то не получается, даже 1% переделать...
А сразу со списками нет? просто знакомых программистов не имею, а вас просить не удобно......
э... не поняла. ты нас НЕ просишь (раз неудобно)? или просишь?
в общем, FAQ по спискам читал? Создать список сможешь (пока без реализации алгоритма считалочки - просто создать)?
мисс_граффити
Прошу конечно, просто неудобно у Вас время воровать своими детскими прогами... ...
Процедуру создания списка писали на лекции, так что...наверное написать и отладить смогу...еще есть распечатка, но со слов парня, который её писал(он просто разбирается в программировании) это "Зеленая демо-бета версия" так что до ума её еще доводить и доводить... ...
Ну вот Пробуй. Когда разберешься с этим - можно будет говорить о реализации какого-либо алгоритма обработки (переделки считалочки).
З.Ы. "Детские" - это, судя по всему, 2 курс?
АГА... ...откуда ты знаешь?...
...
по теме: вообщем создание списка постараюсь зава сделать... ...
так циклические или двунаправленные? или циклические двунаправленные?
насколько я вижу,
zap=record
info:integer
link:lob
end;
Вообщем мне нуна:
или всю прогу на двунаправленных списках...
или всю на циклических...
3-го не дано... ...но желательно черех двунаправленные сделать, то проца которую Я выложил, теоритически через циклические...
...
Ну товарищи помогите плиз...почитал в FAQ начал творить потихоньку, но мозга не хватает...до следущего понедельника надо помочь... ...
Что не получается? Спрашивай конкретно.
Через циклические двусвязные проще всего.
Вопрос такой: куда выводить инфу? Просто печатать номера, или сохранять в список?
Зава скину то что получилось, щас флехи нет рядом...
а вывод нужен 2-х типов...первый после того как ввел, т.е.информационная часть(номер дитя)...второй вот порядок их выбывания, т.е. примерно мона и такой вывод как в задачке с массивами, который выложил volvo, но луче сразу выводить число которое выбыло и все...
Выложить-Я то выложу, что сумел сотворить, но...на этом весь мой мозг закончится
помогите уж тода процами какими...
Совсем забыл: должно быть сделано меню,
1-Ввод данных(ну там кол-во детей, номер каждого впринципе мона и авто заполнение, если мона сделать, и сама считалочка)
2-Вывод того что тока что заполнил
3-Вывод после считалочки
Если кто чем может помогите плиз... ...
что тебе нужно сделать для начала:
1. Обеспечить нормальный ввод (это ты вроде как разобрался более-менее. Домучивай)
2. Научиться "ходить" по списку, чтобы найти исключаемый элемент. Это делается в цикле. Умеешь?
3. Научиться удалять элемент из списка. Это делается при помощи перестановки указателей.
Менюшку и все такое можно сделать потом... пока что нужно создать основу.
вообще "хождение" имеет вид примерно такой:
for i:=1 to step-1 do {делаем заданное количество шагов.}
p:=p^.link;{каждый раз переходя на следующий элемент}
writeln(p^.info); {а теперь выводим, на какой элемент указывает p}
writeln((p^.link)^.info)
СпасиБо...вы мне ТТТТТТТТТТААААААААААКККККККККК помогли... ...
ну никак не получается эта прога...хоть убейте...
вот заполняет, выводит, осталось само выбывание...
Народ, помогите плиз...
Ребят ну помогите плиз...Я в начале обрадовался, когда мии_графити идею дала, но не воплотилась она у мну в жизнь...Завтра сдавать надо, плиз помогите... ...
Все сдал...всем спасибо кто помог... ...
Всем привет!
У меня точно такая же задача. Написал через однонаправленный кольцевой список. У меня вот так (пока черновой вариант) получилось:
uses crt;
type
point=^item;
item=record
number:integer;
next:point;
end;
var
first,r:point;
n,k,l,e:integer;
procedure create(n:integer; var first,r:point);
var
m:integer;
begin
m:=n;
n:=n-1;
first:=nil;
while n>0 do
begin
new®;
r^.next:=first;
r^.number:=n;
first:=r;
n:=n-1;
end;
while r^.next<>nil do
begin
r:=r^.next;
end;
new(r^.next);
r^.next^.number:=m;
r^.next^.next:=first;
end;
procedure print(e:integer;first:point);
var
r:point;
i:integer;
begin
r:=first;
for i:=1 to e do
begin
write(' ',r^.number);
r:=r^.next;
end;
end;
procedure main(first,r:point; n,k:integer);
var
i,a:integer;
q,curr:point;
begin
writeln;
curr:=first;
for a:=1 to n do
begin
i:=0;
for i:=1 to k-1 do
begin
r:=r^.next;
end;
q:=r^.next;
r^.next:=r^.next^.next;
q^.next:=nil;
dec(e);
print(e,r);
writeln;
end;
end;
begin
clrscr;
write('Vvedite n: ');readln(n);
write('Vvedite k: ');readln(k);
create(n,first,r);
e:=n;
write('Kolco: ');
print(e,first);
writeln;
main(first,r,n,k);
readkey;
end.