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

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

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

> Сортировка списка, введенного из файла
сообщение
Сообщение #1


Новичок
*

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

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


Привет.
Вот задачу решал, не могу коечто одолеть:

Напишите процедуру создания линейного списка, в информационные поля элементов которого заносятся числа, считываемые из файла (файл может оказаться пустым). Имя файла вводится с клавиатуры в главной программе и передается в процедуру в качестве параметра. Рассмотрите следующие варианты создания списка:
а)первый включенный в список элемент оказывается в хвосте списка (последним);
б)первый включенный в список элемент оказывается в голове списка (первым);
в)элементы включаются в список в порядке возрастания: в информационном поле первого элемента списка должно быть записано минимальное значение, а последнего элемента – максимальное;
г)элементы, содержащие отрицательные значения, заносятся всегда в конец списка, а положительные – в начало (в порядке считывания из файла), нулевые – между положительными и отрицательными.

Программа недописана нет последней процедуры под г).
И когда я начинаю создавать файл (цифра 3) говорит что "файл закрыт или подобное", пять я с процедурами перехимичил (.
И вообще есть ли помимо этих недочетов еще какиенибудь.

Вот сама прога:


Program work_N3_spiski;

Uses
Crt;

Type
Point = ^List;
List = Record
Inf : Integer;
Next : Point;
END;

Var
Head, Temp, First : Point;
Data : Integer;
FileOfData : File Of Integer;
NameOfFile : String;
Buffer, K, I : Integer;
V1, V2 : Point;
FlagExitMenu : Boolean;
FlagSelect : Integer;

{CREATE NAME OF FILE}

Procedure CreateName;
BEGIN
WriteLn('Enter name of file: ');
Read(NameOfFile);
END;

{CREATE FILE}

Procedure CreateFile;
BEGIN
CreateName;
WriteLn('Enter count elements of the file: ');
ReadLn(K);
Assign(FileOfData,NameOfFile);
Rewrite(FileOfData);
For I := 1 To K Do
BEGIN
WriteLn('Enter element: ');
ReadLn(Data);
Write(FileOfData,Data);
END;
Close(FileOfData);
END;

{HEAD IN THE END}

Procedure Inp(Var NameOfFile : String);
BEGIN
Assign(FileOfData,'NameOfFile');
Reset(FileOfData);
If FileSize(FileOfData) = 0 Then
BEGIN
WriteLn('File is empty');
ReadLn;
Exit;
END;
While Not EOF(FileOfData) Do
BEGIN
Read(FileOfData,Data);
New(Temp);
Temp^.Inf := Data;
Temp^.Next := Head;
Head := Temp;
END;
Close(FileOfData);
END;

{HEAD IN THE BEGIN}

Procedure _Inp(Var NameOfFile : String);
BEGIN
Assign(FileOfData,'NameOfFile');
Reset(FileOfData);
If FileSize(FileOfData) = 0 Then
BEGIN
WriteLn('File is empty');
ReadLn;
Exit;
END;
While Not EOF(FileOfData) Do
BEGIN
Read(FileOfData,Data);
New(Temp);
Temp^.Inf := Data;
Temp^.Next := NIL;
If Head = NIL Then
Head := Temp
Else
First^.Next := Temp;
First := Temp;
END;
Close(FileOfData);
END;

{OUTPUT OF THE LIST}

Procedure Out;
BEGIN
Temp := Head;
WriteLn('Elements of the list: ');
While (Temp <> NIL) Do
BEGIN
WriteLn(Temp^.Inf);
Temp := Temp^.Next;
END;
END;

{DELETE OF ELEMENTS OF THE LIST}

Procedure Del;
BEGIN
While (Head <> NIL) Do
BEGIN
Dispose(Head);
Head := Temp;
END;
END;

{SORTING OF LIST}

Procedure S(L : Point);
BEGIN
V1 := L;
While V1^.Next <> NIL Do
BEGIN
V2 := V1^.Next;
While V2 <> NIL Do
BEGIN
If V1^.Inf > V2^.Inf Then
BEGIN
Buffer := V1^.Inf;
V1^.Inf := V2^.Inf;
V2^.Inf := Buffer;
END;
V2 := V2^.Next;
END;
V1 := V1^.Next;
END;
END;

{=======MAIN PROGRAM=======}

BEGIN
ClrScr;
FlagExitMenu := False;
Repeat
WriteLn('Choose point: ');
WriteLn('0 - Create of file');
WriteLn('1 - FIFO');
WriteLn('2 - LIFO');
WriteLn('3 - Sorting of list');
WriteLn('4 - Sorting of list number two');
WriteLn('5 - Exit');
ReadLn(FlagSelect);
Case FlagSelect Of
0 : BEGIN
CreateFile;
END;
1 : BEGIN
_Inp(NameOfFile);
Out;
Del;
END;
2 : BEGIN
Inp(NameOfFile);
Out;
Del;
END;
3 : BEGIN
Inp(NameOfFile);
S(Temp);
Out;
Del;
END;
{ 4 : BEGIN

END;}
5 : FlagExitMenu := True;
END;
WriteLn('Please, push batton "Enter"');
ReadLn;
ClrScr;
Until FlagExitMenu;
END.



Добавлено через 3 мин.
Файл логический.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 29.03.2024 17:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name