ВАЖНО! Прикрепленные файлы на самом деле не текстовые, а двоичные, но таковые данная система не позволяет прикрепить. Поэтому не стоит пытаться эти файлы читать.
Для работы программы следует переименовать файлы в file1.bin и file2.bin
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)
Воспользуемся расширенной записью шестнадцатиричного числа в десятичной системе счисления. Тогда 3(a*16²+b*16+c)=b*16²+c*16+a; 767a=208b+13c; 59a=16b+c → a=(16b+c)/59 (1) Здесь a,b,c - шестнадцатиричные цифры, имеющие десятичный эквивалент от 0 до 15. Наложим ограничения. a и b не могут быть нулевыми, поскольку с них начинаются числа, а с может быть и нулем. При b=15 и c=15 значение a по формуле (1) не может быть больше (16*15+15)/59, что в целых числах дает 4. Следовательно, нам надо подобрать такие b и c, чтобы a принимало значения от 1 до 4. Будем подставлять эти значения в (1). 1) При а=1 получаем (16b+c)/59=1 → 16b+c=59. b=59/16=3 (нацело), c=59-16*3=11. Искомое число 13B₁₆ 2) При а=2 получаем (16b+c)/59=2 → 16b+c=118. b=118/16=7 (нацело), с=118-16*7=6. Искомое число 276₁₆
Аналогичным образом находим два остальных числа: 3B1₁₆ и 4EC₁₆
Замечание. Фактически, мы получаем числа 59х1, 59х2, 59х3, 59х4 и переводим их в шестнадцатиричную систему счисления, поскольку в формуле (1) в скобках записано представление расширенное представление шестнадцатиричного числа.
b) 0 or 1= 1
2) a) not(1)=0
b) not (0)=1