Помощь - Поиск - Пользователи - Календарь
Полная версия: Срочно нужна программа для курсовой на линейные списки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Gizmo
Вот и сессионый петух клюнул в неподходящее время в неподходящее место,поэтому огромная просьба помочь в написании программы на создание и упорядоченние линейных списков.
1)Создать список упорядоченный по возрастанию ключей.Структура данных эл-та:фамилия,номер телефона.По номеру тел. звонящего абонента выдать его фамилию.
2)По заданной фамилии выдать телефоны всех однофамильцев.
Разницы нету что использовать :стеки,деки или очереди.
PS Уже писал на других форумах посвящённых этой тематики,им оказалось СЛАБО.
volvo
Ну, на форумы-то ты писал... А сам пробовал?

Полностью ЗА ТЕБЯ и у нас тебе решать не будут. Помочь - пожалуйста, но ты ХОТЯ БЫ начни !!!
Gizmo
Программу работающую я написал ,токо использовал ссылки.Декан не принял,а вот про линейные списки я ноль.Если не саму программу ,то хотя бы дайте ссылку на сайт где можно найти эту прогу. wacko.gif
Gizmo
Я почти сделал,но остались недоработки.
Ниже привожу текст программы :
program z1; 
uses crt;
var chel:record
fam:string;
nom:longint;
end;
x:string;
fa:text;
kol,i:byte;

begin
clrscr;
assign(fa,'a.txt');
{rewrite(fa);
writeln('vvedite kol-vo dannuh');
readln(kol);
for i:=1 to kol do begin
with chel do begin
writeln('vvedite familiyu');
readln(fam);
writeln(fa,fam);
writeln('vvedite nomer');
readln(nom);
writeln(fa,nom);
end;
end;
close(fa);}
reset(fa);
readln(x);
while not eof(fa) do with chel do begin
readln(fa,fam);
readln(fa,nom);
if x=fam then writeln(nom);
end;
close(fa);
end.

Токо осталось добавить блок в котором будет по заданной фамилии выводить тел. всех однофамильцев.Программа токо написанна по-этому возможны ошибки.И если кто знает как можно упорядочить списки по возрастанию.
PS курсач сдаю 25 мая
klem4
Так, ну во первых у тебя какая-то ерунда ... ты уточни тебе список записей нужен или массив ?
Gizmo
Цитата(klem4 @ 22.05.2006 20:06) *

Так, ну во первых у тебя какая-то ерунда ... ты уточни тебе список записей нужен или массив ?

Нужен линейный список,а данные ввожу сначала в файл,а потом из файла перебираю
klem4
Ну тогда это делается по другому ... вот пример ввода списка вручную, попробуй сделать тоже из файла

в первой строке файла храни кол-во элементов (n), а далее например n*2 строк

имя1
номер1
имя2
номер2
...

читай их и пиши в список.

uses crt;

const

max = 10;

type

TData = record
name, number : string;
end;

PItem = ^TItem;

TItem = record
data : TData;
next : PItem;
end;

procedure InputData(var DB : PItem; n : integer);
var
newItem : PItem;
name, number : string;

begin

DB := nil;

while (n > 0) do begin

writeln;
write('Name = '); readln(name);
write('Number = '); readln(number);

New(newItem);
newItem^.next := DB;
newItem^.data.name := name;
newItem^.data.number := number;

DB := newItem;

dec(n);
end;
end;

procedure PrintData(var DB : PItem; n : integer);
var
item : PItem;
begin
item := DB;
while (item <> nil) do begin
writeln;
writeln(item^.data.name);
writeln(item^.data.number);
item := item^.next;
end;
end;

var

n : integer;

DataBase : PItem;
begin

clrscr;

write('n = '); readln(n);

InputData(DataBase, n);

writeln;

PrintData(DataBase, n);
readln;
end.
Gizmo
Одна проблема ,кто нибудь знает как упорядочить список по возрастанию ключей?
volvo
сортировка списка простыми вставками

чем не устраивает? Правда, подправить малость придется, чтоб сортировало по нужному тебе ключу...
Gizmo
Сликом геморройно переделывать эту прогу для моей(я уже писал что в списках я ноль).Мне не вся прога нужна а токо кусок чтобы сортировал ключи по возрастанию(по фамилии сортируем).Но всё равно Thanks
Если у кого есть этот кусок проги ,просьба скинуть.
PS А чё с моим вводом данных в файл,он правильный или нет?У меня прога пашет,но здесь писали типа это ерунда. wacko.gif
volvo
Цитата(Gizmo @ 23.05.2006 17:23)
Сликом геморройно переделывать эту прогу для моей(я уже писал что в списках я ноль). Мне не вся прога нужна а токо кусок чтобы сортировал ключи по возрастанию(по фамилии сортируем).
Ну я же написАл, что исправлений будет очень мало:

С учетом тех типов, которые привел в программе klem4, функция сортировки будет выглядеть так:
function insert_sort(L: pitem): pitem;

function insert(a: pitem; L: pitem): pitem;
begin
a^.next := nil;
if l = nil then insert := a
else
if a^.data.name < L^.data.name then begin { <--- Это - единственное исправление !!! }
a^.next := L; insert := a;
end
else begin
L^.next := insert(a, L^.next);
insert := L;
end;
end;

begin
if L = nil then insert_sort := nil
else insert_sort := insert(L, insert_sort(L^.next));
end;


P.S. Не забудь как она вызывается !!!
DataBase := insert_sort(DataBase);
, и никак иначе...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.