Показать сообщение отдельно
  #9  
Старый 13.12.2010, 21:30
Yreng Yreng вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 8
Репутация: 10
По умолчанию

извините за задержу, вот мой код(нерабочий)
основные проблемы:
1. при считывании из файла, последняя строка обрезается до1 буквы, а после идут крякозабры и иероглифы.
2. два файла не считывает, а считывает лишь один.
сижу над прогой несколько дней, и теперь она помоему ещё хуже стала работать.(в начале считывался из двух только 1 файл в конце с крякозабрами, а теперь вобще ничего не считывает)
Код:
program example;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  Stud = record
    Name: String[20];
    Year: Integer;
  end;
  StFile = file of Stud;

procedure OutputFile(var FileToWrite: StFile);
var
  TempRecord: Stud;

begin
  Reset(FileToWrite);
  while not EOF(FileToWrite) do
  begin
    Read(FileToWrite, TempRecord);
    with TempRecord do
      Write(Name);
    Writeln;
  end;
end;



procedure SortFile(var FileToSort: StFile);
var
  I, J: Integer;
  MaximumYear: Integer;
  TempRecord: stud;
  IndexOfMaxRecord: Integer;
  RecordNumberI: stud;
  MinRecord: stud;

begin
  for I := 0 to FileSize(FileToSort) - 2 do
  begin
    Seek(FileToSort, I);
    Read(FileToSort, RecordNumberI);
    MaximumYear := RecordNumberI.Year;
    IndexOfMaxRecord := I;

    for J := I + 1 to FileSize(FileToSort) - 1 do
    begin
      Read(FileToSort, TempRecord);
      if TempRecord.Year > MaximumYear then
      begin
        MaximumYear := TempRecord.Year;
        IndexOfMaxRecord := J;
      end;
    end;
    Seek(FileToSort, IndexOfMaxRecord);
    Read(FileToSort, MinRecord);
    Seek(FileToSort, IndexOfMaxRecord);
    Write(FileToSort, RecordNumberI);
    Seek(FileToSort, I);
    Write(FileToSort, MinRecord);
  end;
end;


procedure Input(var F, G: Stfile; out J: TextFile);
var
  Temp: Stud;
begin
  Reset(F);
  Rewrite(J);
  Reset(J);
  while not Eof(F) do
  begin
    Read(F, Temp);
    Write(J, Temp.Name);
  end;
  Reset(G);
  while not Eof(G) do
  begin
    Read(G, Temp);
    Write(J, Temp.Name);
  end;
end;

var
  F: StFile;
  A: StFile;
  J: Textfile;

begin
  Assign(F, 'C:\file1.dat');
  Reset(F);
  Assign(A, 'C:\file1.dat');
  Reset(A);

  Writeln('Исходный файл:');
  OutputFile(F);


  Writeln;
  Writeln('Исходный файл №2:');
  OutputFile(A);
  Writeln;

  Assign(J, 'result.txt');
  Rewrite(J);

   Input(F, A, J);
  SortFile(F);
  Writeln;
  Writeln('Отсортированный исходный файл:');
  OutputFile(F);

  CloseFile(F);
  CloseFile(A);
  Readln;
end.
Ответить с цитированием