Показать сообщение отдельно
  #2  
Старый 13.12.2010, 17:51
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

Код:
var
  f: file of Stud;
  i, j, n, k: integer;
  a1, a2: array of Stud;
  t: Stud;

begin
  AssignFile(f, 'C:\file1.dat');
  Reset(f);
  i := 0;
  while not eof(f) do
  begin
    SetLength(a1, i + 1);
    Read(f, a1[i]);
    inc(i);
  end;
  CloseFile(f);

  AssignFile(f, 'C:\file2.dat');
  Reset(f);
  n := 0;
  while not eof(f) do
  begin
    SetLength(a2, n + 1);
    Read(f, a2[n]);
    inc(n);
  end;
  CloseFile(f);

  j := i;
  dec(n);
  while n >= 0 do
  begin
    k := i - 1;
    while k >= 0 do
    begin
      if (a1[k].Name = a2[n].Name) and (a1[k].Year = a2[n].Year) then
        break;
      dec(k);
    end;
    if k = -1 then
    begin
      SetLength(a1, j + 1);
      a1[j].Year := a2[n].Year;
      a1[j].Name := a2[n].Name;
      inc(j);
    end;
    dec(n);
  end;

  // Sorting
  for i := 0 to j - 2 do
  begin
    for n := i + 1 to j - 1 do
      if (a1[i].Year > a1[n].Year) then
      begin
        t.Year := a1[i].Year;
        t.Name := a1[i].Name;

        a1[i].Year := a1[n].Year;
        a1[i].Name := a1[n].Name;

        a1[n].Year := t.Year;
        a1[n].Name := t.Name;
      end;
  end;

  AssignFile(f, 'C:\file.dat');
  Rewrite(f);
  for i := 0 to j - 1 do
  begin
    Write(f, a1[i]);
    Writeln(a1[i].Year, ' ', a1[i].Name);
  end;
  CloseFile(f);
  Writeln('Ready');
  Readln;
end.
__________________
Меня греют ваши плюсы к моей репутации...
Ответить с цитированием