Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамические данные
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Child of Bodom
Люди помогите плиз. Срочно надо. Я не понял динамические данные вообще. А мне надо тут прогу сделать. подскажите пожалуйста пару процедур. Вот тут условие: Дан массив записей, содержащий данные: ФИО, стаж работы, ставка. Создать упорядоченный по ФИО список, не перемещая записи. И вот что я смог из себя выжать:
Код
Program Spisok;
const n=5;
uses crt;
type zapis=record
     Fio:string[20];
     Stavka,Stazh:integer;
     end;
     Mas=array [1..n] of zapis;
     uk=^mas;
var a:mas;
    s:zapis;
    i:integer;
    z:uk;
Procedure vvod (var s:zapis;var a:mas);
begin
for i:=1 to n do begin
Writeln ('Введите фамилию');
readln (s.Fio);
writeln ('Введите стаж работы');
readln (s.Stazh);
writeln ('Введите ставку');
readln (s.Stavka);
a[i]:=s;
end;
end;
Procedure sort (var a:mas;var s:zapis);
var i:integer;
    min:string;
    beg:uk;
begin
for i:=1 to n do begin
min:=a[1];
if a[i].Fio<min then
min:=a[i].fio;

Знаю что тут надо с полем next похимичить. Поможете? на всякий случай и сам файлик скину паскалевский



Алена
Вот так, например: сортировка списка простыми вставками

Заметь, никаких перемещений данных - работа только с next ...
Child of Bodom
Цитата(Алена @ 22.03.2007 14:18) *

Вот так, например: сортировка списка простыми вставками

Заметь, никаких перемещений данных - работа только с next ...

Трудность в том что сначала это должен быть массив записей, ну то есть сначала фамилии надо занести в массивы, а потом их надо сортировать
Алена
Трудность твоя - в том, что ты не хочешь читать то, что написано в FAQ - Динамические структуры данных, как именно происходит создание списка... А я не хочу это еще раз переписывать сюда - потому, что FAQ написан не просто так, а с какой-то целью.
Гость
Цитата(Алена @ 22.03.2007 14:43) *

Трудность твоя - в том, что ты не хочешь читать то, что написано в FAQ - Динамические структуры данных, как именно происходит создание списка... А я не хочу это еще раз переписывать сюда - потому, что FAQ написан не просто так, а с какой-то целью.

Я же сказал,что ничего из этого FAQa не понял, ну в смысле не понял, как очередь или стек сделать это я понял, а вот насчет моей задачи нет. Я этот FAq 20 раз прочитал, поэтому и обратися уже непосредственно к нам, а вы меня посылаете на этот FAQ я думал вы помогаете, а не отсылаете
мисс_граффити
Что именно ты не понял? Давай разбираться по шагам:
1) Создаем массив (ничего динамического)
2) Создаем список, данные берем из массива. (как создавать список ты говоришь, что понял. а в чем тогда проблема?)
3) Сортируем список (есть в FAQ)

на каком этапе трудности?
Child of Bodom
Цитата(мисс_граффити @ 22.03.2007 16:00) *

Что именно ты не понял? Давай разбираться по шагам:
1) Создаем массив (ничего динамического)
2) Создаем список, данные берем из массива. (как создавать список ты говоришь, что понял. а в чем тогда проблема?)
3) Сортируем список (есть в FAQ)

на каком этапе трудности?


Код
Program Spisok;
const n=5;
uses crt;
type zapis=record
     Fio:string[20];
     Stavka,Stazh:integer;
     end;
     Mas=array [1..n] of zapis;
     uk=^mas; {Здесь вот правильно ли?}
var a:mas;
    s:zapis;
    i:integer;
    z:uk;
Procedure vvod (var s:zapis;var a:mas);
begin
for i:=1 to n do begin
Writeln ('Введите фамилию');
readln (s.Fio);
writeln ('Введите стаж работы');
readln (s.Stazh);
writeln ('Введите ставку');
readln (s.Stavka);
a[i]:=s;
end;
end;
Procedure sort (var a:mas;var s:zapis);
var i:integer;
    min:string;
    beg:uk;
begin
for i:=1 to n do begin
min:=a[1];
if a[i].Fio<min then
min:=a[i].fio;

И вот теперь не знаю что писать. Если присваивать beg'у min или a[i] то произойдет расхождение в типах. Поэтому и не знаю что теперь, а так хочу отсортировать не помню какой вообщем:ищу наименьшее, и делаю его первым ну присваиваю ему beg? потом нашел следующий min? на него ссылку next и теперь beg'ом он становится. А вот как то вот сделать???
мисс_граффити
1) ты пытаешься сортировать массив - зачем?
2)
uk=^mas;

нет. указатель должен быть не на весь массив, а на элемент массива, то есть на zapis.
кроме того, если ты возьмешь zapis за основу для списка, понадобится еще одно поле - для указателя на след.элемент....
Child of Bodom
Цитата(мисс_граффити @ 22.03.2007 16:29) *

1) ты пытаешься сортировать массив - зачем?
2)
uk=^mas;

нет. указатель должен быть не на весь массив, а на элемент массива, то есть на zapis.
кроме того, если ты возьмешь zapis за основу для списка, понадобится еще одно поле - для указателя на след.элемент....

То есть я делаю вместо uk=^mas - uk=^zapis? и к записи еще добавляю поле next:uk так??? А дальше???С расхождением в типах что можно сделать???
мисс_граффити
а в каком месте расхождение-то возникает?
между указателем на запись и записью, что ли?
Child of Bodom
Цитата(мисс_граффити @ 22.03.2007 17:08) *

а в каком месте расхождение-то возникает?
между указателем на запись и записью, что ли?

ну на практике еще не проверял, но по идее токого что ли не должно быть???
мисс_граффити
давай ты проверишь на практике, покажешь КАК ты проверял - тогда и обсудим.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.