Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Delphi. Вопросы по курсовой.

40K
18 ноября 2008 года
themusicman
15 / / 18.11.2008
Есть задание к курсовой:
1. Тип списка: двусвязный линейный список
2. Метод сортировки:
2.1 массива: пузырьковая
2.2 списка: пузырьковая с заменой указателей
3. Структура данных для поиска и метод поиска: Поиск в списке
4. Направлеине поиска в двусвязном списке: поиск в обратном направлении

5. Тип файла и структура данных для сортировки:
5.1 тип файла: двоичный
5.2 структура данных: массив

Препод толком ничего не говорит.
С сортировками я ещё разберусь, а вот первый, третий и четвёртый вопрос в ступор вводят. В виде чего мне всё это реализовать? Буду рад любому материалу, который пригодится при написании программы (ссылки\куски исходников\советы).
14
18 ноября 2008 года
Phodopus
3.3K / / 19.06.2008
1. Двусвязный линейный список обычно реализуется записями (record). И динамической памятью (New()/Dispose()). Смотрите wiki.
3. Поиск в списке - это поиск в списке. От головы к хвосту.
4. Поиск в обратном направлении - это когда ищем от хвоста к голове (просто, не так ли?)

Да, еще к курсовой должен быть общий для всех кусок. То что вы приводите - лишь ваш вариант. Приведёте общий кусок - возможно станет понятнее.
40K
18 ноября 2008 года
themusicman
15 / / 18.11.2008
Цитата: Phodopus
1. Двусвязный линейный список обычно реализуется записями (record). И динамической памятью (New()/Dispose()). Смотрите wiki.
3. Поиск в списке - это поиск в списке. От головы к хвосту.
4. Поиск в обратном направлении - это когда ищем от хвоста к голове (просто, не так ли?)

Да, еще к курсовой должен быть общий для всех кусок. То что вы приводите - лишь ваш вариант. Приведёте общий кусок - возможно станет понятнее.



По поводу общего куска - ничего подобного в наших курсовых работах нет. Каждому студенту дано конкретное задание, на листочке напечатано :)

Я лично вижу реализацию данной курсовой программы в виде отдельных форм, т.е. каждый пункт - отдельная форма, итого 5 форм.
Возможно в методичке, которую преподаватель ещё не дописал :D , что-то и будет по поводу задач, но пока что это только плод моего воображения. И я начал уже выполнять её в таком виде, как описал выше.

За помощь спасибо, буду ковыряться.

40K
19 ноября 2008 года
themusicman
15 / / 18.11.2008
Цитата: Phodopus
1. Двусвязный линейный список обычно реализуется записями (record). И динамической памятью (New()/Dispose()). Смотрите wiki.



Не могу разобраться, что такое вообще двусвязный линейный список? Что он из себя представляет? Каким компонентом его можно реализовать? Где можно почитать об этом? И как оно визуально выглядит?

Цитата:
По двусвязному списку можно передвигаться в любом направлении — как к началу, так и к концу. В этом списке проще производить удаление и перестановку элементов, т.к. всегда известны адреса тех элементов списка, указатели которых направлены на изменяемый элемент.


Но этого мало, чтобы понять и тем более реализовать в дельфях...

Цитата: Phodopus
3. Поиск в списке - это поиск в списке. От головы к хвосту.


Т.е. поиск можно реализовать с помощью компонента FindDialog? А список в RichEdit, Memo например?

14
19 ноября 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: themusicman
Не могу разобраться, что такое вообще двусвязный линейный список? Что он из себя представляет? Каким компонентом его можно реализовать? Где можно почитать об этом? И как оно визуально выглядит?


- Это способ представления структурированных данных в памяти (в противовес, например, массиву).
- Связанные парой указателей записи, элементами которых являются как раз эта пара указателей + полезная нагрузка (пользовательские поля).
- Преподаватель потребует собственную реализацию. Нет компонентов реализующих двухсвязный список.
- Читать в любой нормальной книге. В статьях по структурам данных для начинающих. Чтобы не быть голословным, пример: "Бакнелл Джулиан. Фундаментальные алгоритмы и структуры данных в Delphi".
- Визуально он не выглядит. Как по-вашему визуально выглядит переменная? В виде "ящичка" с числом? Тогда список в виде набора бааальших ящичков с двумя стрелками из каждого.

40K
01 декабря 2008 года
themusicman
15 / / 18.11.2008
А что по поводу сортировки пузырьком с заменой указателей в списке?
14
02 декабря 2008 года
Phodopus
3.3K / / 19.06.2008
Обычная пузырьковая сортировка, при перестановке элементов у них меняются указатели.
40K
04 декабря 2008 года
themusicman
15 / / 18.11.2008
Подскажите, в чём собака зарыта?

Необходимо отсортировать массив методом отбора (линейная сортировка).

Вот, накидал процедуру

Код:
procedure otbor(var mas:List);
var i,j:integer;
begin
for i:=1 to 20 do
for j:=i+1 to 20 do begin
if mas[j]<mas then
begin
n:=mas[j];
mas[j]:=mas;
mas:=n;
end;
end;
end;


и для кнопки код

 
Код:
procedure TForm3.Button2Click(Sender: TObject);
var i:integer;
begin
   otbor(Spisok);
  n:=spinedit1.Value;
  StringGrid2.ColCount:=n;
  for i:=1 to n do
     StringGrid2.Cells[i-1,0]:=inttostr(Spisok);
     showmessage('Массив отсортирован!');
end;


Генерирую массив и нажимаю отсортировать. Выпадают одни нули. Если снова сгенерировать и отсортировать, то всё в порядке. В чём дело может быть? Может какая-то ошибка?
14
05 декабря 2008 года
Phodopus
3.3K / / 19.06.2008
Скорее всего первый раз массив просто не генерируется
40K
05 декабря 2008 года
themusicman
15 / / 18.11.2008
Цитата: Phodopus
Скорее всего первый раз массив просто не генерируется



Всмысле? У меня есть на форме два Stringgrid'а, две кнопки. Одна генерирует массив в первый стриннгрид, т.е. я вижу, что он сгенерирован, а вторая сортирует и вносит во второй стринггрид отсортированные данные.
С сортировкой по убыванию всё в порядке, а вот по возрастанию такая ерунда.

40K
06 декабря 2008 года
themusicman
15 / / 18.11.2008
Ладно, предыдущий вопрос можно опустить.

Хочу вернуться к спискам.
Допустим есть список

Код:
type
PList = ^TList;
     TList = record
           Prev : PList;
           Value : Byte;
           Next : PList;
           end;

...

procedure PushToBack(var Head : PList;var Tail :PList; dec : byte);
var NewPtr : PList;
begin
New(NewPtr);
NewPtr^.Value:=dec;
NewPtr^.next := nil;
NewPtr^.prev := nil;
if Head=nil then begin
                 Head:=NewPtr;
                 Tail:=NewPtr;
                 end
            else begin
                 Tail^.Next:=NewPtr;
                 NewPtr^.Prev:=Tail;
                 Tail:=NewPtr;
                 end;
end;


Но что с ним дальше то делать? Какие действия с ним можно совершать? Какие можно к этому компоненты использовать? Вобщем как всё это визуализировать? Всё таки что-то же должен этот код делать...
Подскажите пожалуйста, перерыл кучу статей, исходников, ничего не пойму.
Хотя бы какие-то примитивные действия...
14
09 декабря 2008 года
Phodopus
3.3K / / 19.06.2008
Вы википедию читали?
У вас наблюдается полное отсутствие представления о предмете курсовой..
Списки совсем не сложно понять, особенно когда их нарисуешь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог