Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Срочно нужна программа для курсовой на линейные списки

Автор: Gizmo 17.05.2006 22:05

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

Автор: volvo 17.05.2006 22:12

Ну, на форумы-то ты писал... А сам пробовал?

Полностью ЗА ТЕБЯ и у нас тебе решать не будут. Помочь - пожалуйста, но ты ХОТЯ БЫ начни !!!

Автор: Gizmo 18.05.2006 1:30

Программу работающую я написал ,токо использовал ссылки.Декан не принял,а вот про линейные списки я ноль.Если не саму программу ,то хотя бы дайте ссылку на сайт где можно найти эту прогу. wacko.gif

Автор: Gizmo 22.05.2006 22:58

Я почти сделал,но остались недоработки.
Ниже привожу текст программы :

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 22.05.2006 23:06

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

Автор: Gizmo 22.05.2006 23:23

Цитата(klem4 @ 22.05.2006 20:06) *

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

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

Автор: klem4 22.05.2006 23:35

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

в первой строке файла храни кол-во элементов (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 23.05.2006 2:41

Одна проблема ,кто нибудь знает как упорядочить список по возрастанию ключей?

Автор: volvo 23.05.2006 2:53

http://forum.pascal.net.ru/index.php?s=&showtopic=7992&view=findpost&p=55605

чем не устраивает? Правда, подправить малость придется, чтоб сортировало по нужному тебе ключу...

Автор: Gizmo 23.05.2006 21:23

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

Автор: volvo 24.05.2006 2:53

Цитата(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);
, и никак иначе...