IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Программа с однонаправленным списком, Добавление в однонаправленный список с одновременным упорядочиванием
qlimax
сообщение 3.09.2007 15:42
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Доброго всем времени суток!

Помогите, пожалуйста, разобраться с такой задачей:

Разработать программу, которая обеспечивает последовательное занесение информации о школьных кабинетах (название кабинета, номер кабинета, количество мест) в однонаправленный список с одновременным упорядочением по количеству мест в кабинете. Упорядоченный список записать в текстовый файл.

Не могу сообразить, как одновременное упорядочивание сделать... Исправить чуть-чуть надо, а не получается.

Текст программы:


program list1;

uses crt;

type
pKAB=^KAB;
KAB=record
nazv:string[20];
nomer:word;
kolvo:word;
pNEXT:pKAB;
end;

var
pBEGIN, pEND, pAUX, pKEY: pKAB;
sNAZV: string[20];
sNOMER, sKOLVO: word;
rezh: char;
input_end: boolean;
RFILE: text;

procedure create (var pBEGIN, pEND: pKAB; sNAZV: string; sNOMER, sKOLVO: word);
begin
new(pBEGIN);
pBEGIN^.pNEXT:=nil;
pBEGIN^.nazv:=sNAZV;
pBEGIN^.nomer:=sNOMER;
pBEGIN^.kolvo:=sKOLVO;
pEND:=pBEGIN;
end;

procedure add (var pBEGIN: pKAB; sNAZV: string; sNOMER, sKOLVO: word);
var pAUX: pKAB;
begin
pKEY:=pBEGIN;
while pKEY<>nil do
begin
if sKOLVO < pKEY^.kolvo then pKEY:=pKEY^.pNEXT;
end;
new(pAUX);
pAUX^.nazv:=sNAZV;
pAUX^.nomer:=sNOMER;
pAUX^.kolvo:=sKOLVO;
pAUX^.pNEXT:=pKEY^.pNEXT;
pKEY^.pNEXT:=pAUX;
if pBEGIN=pKEY then pBEGIN:=pKEY^.pNEXT;
end;

procedure input;
begin
clrscr;
write('Vvedite nazvanie kabineta: ');
readln(sNAZV);
write('Vvedite nomer kabineta: ');
readln(sNOMER);
write('Vvedite kolichestvo mest v kabinete: ');
readln(sKOLVO);
add(pBEGIN,sNAZV,sNOMER,sKOLVO);
end;

procedure print;
begin
assign(RFILE,'kabs.txt');
rewrite(RFILE);
pAUX:=pBEGIN;
repeat
writeln(RFILE,pAUX^.nazv,' ',pAUX^.nomer,' ',pAUX^.kolvo);
pAUX:=pAUX^.pNEXT;
until pAUX=nil;
close(RFILE);
end;

procedure per;
begin
clrscr;
write('Nazvanie kabineta: ');
readln(sNAZV);
write('Nomer kabineta: ');
readln(sNOMER);
write('Kolichestvo mest: ');
readln(sKOLVO);
create(pBEGIN,pEND,sNAZV,sNOMER,sKOLVO);
end;

begin

clrscr;
writeln('Vyberite rezhim raboty:');
writeln;
writeln('1 - vvod informatsii o kabinete');
writeln('2 - vyhod iz programmy');
writeln;
readln(rezh);
case rezh of
'1' : per;
'2' : exit;
end;

clrscr;
input_end:=false;
repeat
clrscr;
writeln('Vyberite rezhim raboty:');
writeln;
writeln('1 - vvod informatsii o kabinete');
writeln('2 - zapis'' uporyadochennogo spiska kabinetov v fajl');
writeln;
readln(rezh);
case rezh of
'1' : input;
'2' : input_end:=true;
else
begin
writeln('Nepravil''niy rezhim! Povtorite vvod');
readln;
end;
end;
until input_end;

print;

writeln;
write('Dannye zapisany. Vykhod iz programmy...');
readln;
end.



Заранее спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"