Нужно написать программу в pascal. нужно будет считать информацию с двух файлов и объединить их в один файл. в первом файле есть 3 столбца: 1. четырехзначный номер 2. рост 3. вес во втором файле также 3 столбца: 1. четырехзначный номер 2. время бега на 1 км 3. колличество подтягиваний нужно написать программу которая будет считывать данные с двух файлов и будет создавать 3ий файл, в котором программа объединит все данные в соответствии с номером. pascalabc.net 3.1

Наташа1111111124 Наташа1111111124    3   10.09.2019 16:00    0

Ответы
Фиалка2332 Фиалка2332  07.10.2020 05:37
ВАЖНО! Прикрепленные файлы на самом деле не текстовые, а двоичные, но таковые данная система не позволяет прикрепить. Поэтому не стоит пытаться эти файлы читать.

Для работы программы следует переименовать файлы в file1.bin и file2.bin

Содержимое файла f1
7696 163 67
9195 183 71
1922 174 77
4586 173 68
4611 164 64
4204 164 60
8914 178 62
1102 162 63
4947 184 63
6185 174 79

Содержимое файла f2
4611 287 4
1102 312 3
9195 220 12
3142 251 7
8914 229 9
7696 252 7
1922 245 5
4204 273 6
4586 241 10

// PascalABC.NET 3.3, сборка 1573 от 04.11.2017
// Внимание! Если программа не работает, обновите версию!

type
  st1=record
    номер:integer;
    рост:integer;
    вес:integer
  end;
  st2=record
    номер:integer;
    время_бега:integer;
    кол_подтягиваний:integer
  end;
  st3=record
    номер:integer;
    рост:integer;
    вес:integer;
    время_бега:integer;
    кол_подтягиваний:integer
  end;

begin
  // считываем файл f1 в массив типа st1
  var f1:file of st1;
  Assign(f1,'file1.bin'); Reset(f1);
  var n1:=FileSize(f1);
  var m1:=new st1[n1];
  for var i:=0 to n1-1 do Read(f1,m1[i]);
  f1.Close;
  // читаем файл f2 и для каждой записи ищем элемент массива
  // с таким же номером. Если найден - делаем слияние в файл f3
  var f2:file of st2;
  Assign(f2,'file2.bin'); Reset(f2);
  var buf2:st2; // буфер для чтения f2
  var f3:file of st3;
  Assign(f3,'file3.bin'); Rewrite(f3);
  var buf3:st3; // буфер для записи f3
  while not Eof(f2) do begin
    Read(f2,buf2);
    var j:=m1.FindIndex(t->t.номер=buf2.номер);
    if j<>-1 then begin
      buf3.номер:=buf2.номер;
      buf3.рост:=m1[j].рост;
      buf3.вес:=m1[j].вес;
      buf3.время_бега:=buf2.время_бега;
      buf3.кол_подтягиваний:=buf2.кол_подтягиваний;
      Write(f3,buf3)
      end
    end;
  f2.Close;
  // посмотрим, что получилось в f3
  Seek(f3,0);
  while not Eof(f3) do begin
    Read(f3,buf3); Print(buf3)
    end;
  f3.Close
end.

Пример работы программы
(4611,164,64,287,4) (1102,162,63,312,3) (9195,183,71,220,12) (8914,178,62,229,9) (7696,163,67,252,7) (1922,174,77,245,5) (4204,164,60,273,6) (4586,173,68,241,10)
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика