Нужно написать программу в Pascal.Нужно будет считать информацию с двух файлов и объединить их в один файл. В первом файле есть
Нужно написать программу в Pascal. Нужно будет считать информацию с двух файлов и объединить их в один файл. В первом файле есть 3 столбца: 1. Четырехзначный номер 2. Рост 3. Вес Во втором файле также 3 столбца: 1. Четырехзначный номер 2. Время бега на 1 км 3. Колличество подтягиваний Нужно написать программу которая будет считывать данные с двух файлов и будет создавать 3ий файл, в котором программа объединит все данные в соответствии с номером. PascalABC.NET 3.1
<em>ВАЖНО!</em> Прикрепленные файлы на самом деле не текстовые, а двоичные, но таковые данная система не позволяет прикрепить. Поэтому не стоит пытаться эти файлы читать.
<u>Для работы программы следует переименовать файлы в file1.bin и file2.bin</u>
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.
<em>// PascalABC.NET 3.2, сборка 1370 от 24.12.2016</em> <em>// Внимание! Если программа не работает, обновите версию!</em>
begin var a:=ArrRandom(10,-99,99); a.Println; Writeln('Минимальный из нечетных элементов массива равен ', a.Where((x,i)->i.IsEven).Min); Writeln('Сумма после первого минимального элемента равна ', a.Where((x,i)->i>a.IndexMin).Sum); Writeln('Произведение после первого минимального элемента равно ', a.Where((x,i)->(i>a.IndexMin) and (x<>0)).Aggregate(1,(x,y)->x*y)); end.
<u>Пример</u> 10 2 34 -69 -14 -13 61 77 -59 99 Минимальный из нечетных элементов массива равен -59 Сумма после первого минимального элемента равна 151 Произведение после первого минимального элемента равно -698234918