Переделать список без ООП, помогите, очень надо!!! |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Переделать список без ООП, помогите, очень надо!!! |
SunDevil |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Здравствуйте!
Прощу вашей помощи. Вот такая задача: Вводим любой список(массив записей) с клавиатуры. Список должен быть двусвязный. Потом программа должна "спросить" о добавлении нового элемента в список. Ну, типа, 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 и распаковать его содержимое в отдельную папку) Прикрепленные файлы list.rar ( 1.48 килобайт ) Кол-во скачиваний: 185 |
SunDevil |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: 0 |
Помогите переделать прогу. Там все на объектах, а мне надо просто чтобы без объектов было, а то я в них не шарю....Там задание вообще было: создать список, добавить элемент в конец списка, удалить выбранный элемент! Еще раз повторюсь, что там все в ООП, а я в нем не шарю, помогите, плиз, переделать в нормальный вид :D
Сообщения объединены из темы "Помогите с Массивом записей" Прикрепленные файлы LAB4.zip ( 1.25 килобайт ) Кол-во скачиваний: 189 |
volvo |
Сообщение
#4
|
Гость |
Я тебе эту программу писал, я тебе скажу так: легче заново ее сделать, чем ПЕРЕДЕЛАТЬ без объектов. Кстати, зачем опять тему дублируешь?
|
НарКот |
Сообщение
#5
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
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
|
Гость |
Держи... Но больше ПЕРЕделывать ничего не буду...
Прикрепленные файлы lab4.rar ( 1.11 килобайт ) Кол-во скачиваний: 178 |
Текстовая версия | 4.05.2024 21:04 |