Сначала надо избавиться от ошибок (пункт №3) иначе не сможем выполнить 1 и 2 пункт задания. Исправляем if N mod 10 k:=N mod 10; на if (N mod 10 < k) then k:=N mod 10; Исправляем N:N div 10; на N:= N div 10;
После исправления ошибок при вводе 537 получим 3 Программа будет работать правильно для любого числа, у которого вторая цифра слева меньше первой цифры, например: 7193
Чтобы программа работала правильно для всех чисел надо изменить это: while N > 10 do на while N > 0 do
После всех исправлений код программы стал таким: var N, k: integer; begin readln(N); k := 9; while N > 10 do begin if (N mod 10 < k) then k := N mod 10; N := N div 10; end; write(k) end.
ВАЖНО! Прикрепленные файлы на самом деле не текстовые, а двоичные, но таковые данная система не позволяет прикрепить. Поэтому не стоит пытаться эти файлы читать.
Для работы программы следует переименовать файлы в 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)
Повторяется А
Повторяется Н