![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
SunDevil |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте!
Прощу вашей помощи. Вот такая задача: Вводим любой список(массив записей) с клавиатуры. Список должен быть двусвязный. Потом программа должна "спросить" о добавлении нового элемента в список. Ну, типа, writeln('Введите еще один элемент') и добавить его в КОНЕЦ СПИСКА. Потом программа должна определить количество элементов в списке. И в конце должна "спросить" writeln('Введите номер элемента, который следует удалить') и удалить тот элемент, который я ввел с клавиатуры. Очень нужна ваша помощь! Даже не могу показать вам свой исходник, т.к. его просто у меня нет ![]() ОЧЕНЬ ПРОШУ - ПОМОГИТЕ! БОЛЬШОЕ СПАСИБО! p.s. Извините, может это и есть в FAQ, но времени у меня мало, чтобы искать, а срочно надо до завтрашнего дня! ЕЩЕ РАЗ СПАСИБО! |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, если быстро, то вот так:
Код uses item, list; var l: tlist; s: string; p: ptitem; count, index: integer; begin L.init; repeat write('вводите строку: '); readln(s); if s <> '' then L.append(s); until s = ''; write('Введите еще один элемент: '); readln(s); L.append(s); L.print; p := L.first; count := 0; while assigned(p) do begin inc(count); p := p^.next end; writeln('count = ', count); write('Введите номер элемента, который следует удалить: '); readln(index); p := L.first; while index > 1 do begin dec(index); p := p^.next end; L.remove_item(p); L.print; L.done; end. P.S. Почитать про динамические структуры данных можно здесь: FAQ: Динамические структуры данных (для успешного запуска программы необходимо скачать модуль List.rar и распаковать его содержимое в отдельную папку) Прикрепленные файлы ![]() |
SunDevil |
![]() ![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите переделать прогу. Там все на объектах, а мне надо просто чтобы без объектов было, а то я в них не шарю....Там задание вообще было: создать список, добавить элемент в конец списка, удалить выбранный элемент! Еще раз повторюсь, что там все в ООП, а я в нем не шарю, помогите, плиз, переделать в нормальный вид :D
Сообщения объединены из темы "Помогите с Массивом записей" Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Я тебе эту программу писал, я тебе скажу так: легче заново ее сделать, чем ПЕРЕДЕЛАТЬ без объектов. Кстати, зачем опять тему дублируешь?
|
НарКот |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
SunDevil,
нашел свою программку за первый курс посмотри ее, надеюсь она будет тебе в помощь Если что удали парочку ненужных тебя для процедур Код Program spiski; uses crt; type Ukazat=^Inform; Inform=record fam:string[15]; ††††next:Ukazat; prev:Ukazat; end; var temp,first,wqw,cut,p,pk:Ukazat; ch:char; ffam:string[15]; {========================================================================} Procedure Zapolnenie; begin ClrScr; new(temp); write('Vvedite element: '); readln(temp^.fam); if first=nil then begin temp^.prev:=nil; temp^.next:=nil; first:=temp; cut:=temp; end else begin temp^.next:=nil; temp^.prev:=cut; cut^.next:=temp; cut:=temp; end; end; {========================================================================} Procedure Udal; begin ClrScr; if first=nil then begin writeln; writeln('!!!!!!! Tablisa pusta !!!!!!!!!'); end else begin write('Vvedite udalayemiy element spiska: '); readln(ffam); temp:=first; wqw:=first; while temp<>nil do begin temp:=wqw; while (ffam<>temp^.fam) and (temp<>nil) do temp:=temp^.next; if temp=nil then begin write{('Takogo elementa net')}; readln; end else begin if first<>cut then if temp^.prev=nil then begin temp^.next^.prev:=temp^.prev; first:=temp^.next; end else if temp^.next=nil then begin temp^.prev^.next:=temp^.next; cut:=temp^.prev; end else begin temp^.prev^.next:=temp^.next; temp^.next^.prev:=temp^.prev; end else first:=nil; dispose(temp); end; end; end; end; {======================================================================} Procedure Poisk; begin ClrScr; if first=nil then begin writeln; writeln('!!!!!!! Tablisa pusta !!!!!!!!!'); end else begin write('Vvedite element: '); readln(ffam); temp:=first; while (ffam<>temp^.fam) and (temp<>nil) do temp:=temp^.next; if ffam=temp^.fam then begin writeln('Spisok sodergit danniy element '); readln; end; if temp=nil then begin write('Takogo elementa v spiske net'); readln; end; end;end; {=======================================================================} PROCEDURE Vstavka; begin ClrScr; begin write('Vvedite element posle kotorogo vi hotite vstavit : '); readln(ffam); temp:=first; while (ffam<>temp^.fam) and (temp<>nil) do temp:=temp^.next; if ffam=temp^.fam then begin new(pk); write('Vvedite vstavlayemiy element: '); readln(pk^.fam); †pk^.next:=temp^.next; pk^.prev:=temp; temp^.next:=pk; pk^.next^.prev:=pk; end; end; if temp=nil then begin write('Takogo elementa v spiske net'); readln; end; end; {===========================================================================} Procedure Prosm; begin ClrScr; temp:=first; if first<>nil then begin writeln('Spisok elementov: '); while temp<>nil do begin writeln(' ',temp^.fam); temp:=temp^.next; end; end else writeln('Tablica pusta':40); readln; end; begin clrscr; Textcolor(6); repeat writeln; writeln( ' Viberite deistvie:'); writeln('1-Zapolnenie'); writeln('2-Udalit'); writeln('3-Prosmotret'); writeln('4 -Poisk '); writeln('5 -Vstavka '); writeln('0-Vixod'); readln(ch); case ch of '1':Zapolnenie; '2':Udal; '3':Prosm; '4':Poisk; '5':Vstavka end; until ch='0'; end. |
-SunDevil- |
![]()
Сообщение
#6
|
Гость ![]() |
2 volvo
Если несложно, то не могли бы вы переписать прогу, а то сдавать в универ надо СРОЧНО, а то к экзамену не допустят ![]() |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Держи... Но больше ПЕРЕделывать ничего не буду...
Прикрепленные файлы ![]() |
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 16:22 |