![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Gizmo |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Gaidar Репутация: ![]() ![]() ![]() |
Вот и сессионый петух клюнул в неподходящее время в неподходящее место,поэтому огромная просьба помочь в написании программы на создание и упорядоченние линейных списков.
1)Создать список упорядоченный по возрастанию ключей.Структура данных эл-та:фамилия,номер телефона.По номеру тел. звонящего абонента выдать его фамилию. 2)По заданной фамилии выдать телефоны всех однофамильцев. Разницы нету что использовать :стеки,деки или очереди. PS Уже писал на других форумах посвящённых этой тематики,им оказалось СЛАБО. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, на форумы-то ты писал... А сам пробовал?
Полностью ЗА ТЕБЯ и у нас тебе решать не будут. Помочь - пожалуйста, но ты ХОТЯ БЫ начни !!! |
Gizmo |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Gaidar Репутация: ![]() ![]() ![]() |
Программу работающую я написал ,токо использовал ссылки.Декан не принял,а вот про линейные списки я ноль.Если не саму программу ,то хотя бы дайте ссылку на сайт где можно найти эту прогу.
![]() |
Gizmo |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Gaidar Репутация: ![]() ![]() ![]() |
Я почти сделал,но остались недоработки.
Ниже привожу текст программы : 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 мая Сообщение отредактировано: volvo - 3.11.2006 22:06 |
klem4 |
![]()
Сообщение
#5
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Так, ну во первых у тебя какая-то ерунда ... ты уточни тебе список записей нужен или массив ?
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Gizmo |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Gaidar Репутация: ![]() ![]() ![]() |
|
klem4 |
![]()
Сообщение
#7
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Ну тогда это делается по другому ... вот пример ввода списка вручную, попробуй сделать тоже из файла
в первой строке файла храни кол-во элементов (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.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Gizmo |
![]()
Сообщение
#8
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Gaidar Репутация: ![]() ![]() ![]() |
Одна проблема ,кто нибудь знает как упорядочить список по возрастанию ключей?
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
сортировка списка простыми вставками
чем не устраивает? Правда, подправить малость придется, чтоб сортировало по нужному тебе ключу... |
Gizmo |
![]()
Сообщение
#10
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Gaidar Репутация: ![]() ![]() ![]() |
Сликом геморройно переделывать эту прогу для моей(я уже писал что в списках я ноль).Мне не вся прога нужна а токо кусок чтобы сортировал ключи по возрастанию(по фамилии сортируем).Но всё равно Thanks
Если у кого есть этот кусок проги ,просьба скинуть. PS А чё с моим вводом данных в файл,он правильный или нет?У меня прога пашет,но здесь писали типа это ерунда. ![]() Сообщение отредактировано: Gizmo - 23.05.2006 18:02 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата(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);
, и никак иначе... |
![]() ![]() |
![]() |
Текстовая версия | 1.09.2025 8:05 |