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

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

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

> Сортировка списка, введенного из файла
Совсем новичок
сообщение 26.11.2007 16:51
Сообщение #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 
 К началу страницы 
+ Ответить 

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


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

 

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