|
|||
выводим фамилии и имена тех, чей результат меньше или{ выводим фамилии и имена тех, чей результат меньше или равен «третьему худшему» } 2) до того, как начать писать «нормальный» код, нужно определить, как хранить данные; в данном случае нужно запомнить несколько данных по каждому ученику, их удобнее объединить в запись с двумя полями (фамилия-имя и сумма баллов); таких записей нужно выделить в памяти не менее 100 (по условию), то есть, массив из 100 элементов: const LIM=100; var Info: array[1..LIM] of record name: string; sum: integer; end; Чтение данных: 3) после того, как мы прочитали фактическое число учеников N, в цикле считываем и расшифровываем информацию о них, сохраняя все данные в структурах for i:=1 to N do begin { считываем строку данных } Info[i].name := { фамилия и имя }; Info[i].sum := { сумма баллов }; end; 4) здесь, в принципе, можно использовать тот же подход, что и в первой задаче – читаем строку целиком, затем «разбираем» ее на части с помощью стандартных функций – однако, для разнообразия, мы используем другой подход – будем читать информацию посимвольно, то есть, считывая по одному символу в переменную c типа char; 5) сначала в поле name очередной структуры записываем пустую строку ''(в которой нет ни одного символа, длина равна нулю) Info[i].name := ''; { пустая строка } 6) затем считываем символы фамилии и сразу приписываем их в конец поля name: repeat read ( c ); Info[i].name := Info[i].name + c; until c = ' '; { пока не прочитали пробел } 7) затем также читаем из входного потока имя, до пробела, и записываем его в конец того же поля name: repeat read ( c ); Info[i].name := Info[i].name + c; until c = ' '; { пока не прочитали пробел } заметьте, что эти два цикла одинаковы, поэтому ввод имени и фамилии можно записать в виде вложенного цикла так: Info[i].name := ''; { пустая строка }
|
|||
|