|
|||
for k:=1 to 99 do C[k]:=0;. for i:=1 to N do begin. s := Copy(s, p+1, Length(s)-p);for k:=1 to 99 do C[k]:=0; во многих системах программирования на Паскале все глобальные переменные автоматически обнуляются, и таким образом, этот цикл ничего не дает; однако на всякий случай нужно продемонстрировать эксперту, который будет проверять часть С вашей работы, что вы понимаете суть дела («счетчик необходимо сначала обнулить») 4) основной цикл обработки вводимых строк можно записать на псевдокоде так: for i:=1 to N do begin { читаем очередную строку } { определяем номер школы k } C[k] := C[k] + 1; { увеличиваем счетчик k-ой школы } end; 5) поскольку данные вводятся в виде символьной строки, нужно выделить в памяти переменную sтипа string 6) для чтения очередной строки будем использовать оператор readln 7) остается понять, как выделить из строки номер школы; по условию он закодирован в последней части строки, после второго пробела; значит, нужно найти этот второй пробел, вырезать из строки весь «хвост» после этого пробела, и преобразовать его из символьного формата в числовой 8) чтобы найти первый пробел и «отрезать» первую часть строки с этим пробелом, можно использовать команды p := Pos(' ', s); s := Copy(s, p+1, Length(s)-p); первая команда определяет номер первого пробела и записывает его в целую переменную p, в вторая – записывает в строку s весь «хвост», стоящий за этим пробелом, начиная с символа с номером p+1; длина хвоста равна Length(s)-p, где Length(s) – длина строки; 9) поскольку нас интересует часть после второго пробела, эти две строчки нужно повторить два раза, в результате в переменной s окажется символьная запись номера школы; 10) заметим, что можно избежать дублирования двух строк, «свернув» их во внутренний цикл, но это вряд ли сильно упростит запись:
|
|||
|