Меню сайта
Реклама
Оцените сайт
Программирование
|
Решение задачи №10.Задача №10.
Иванов П.С. 57На вход программе подаются сведения о номерах школ учащихся, участвовавших в олимпиаде. В первой строке сообщается количество учащихся N, каждая из следующих N строк имеет формат: <Фамилия> <Инициалы> <номер школы>, где <Фамилия> – строка, состоящая не более чем из 20 символов, <Инициалы> – строка, состоящая из 4-х символов (буква, точка, буква, точка), <номер школы> – не более чем двузначный номер. <Фамилия> и <Инициалы>, а также <Инициалы> и <номер школы> разделены одним пробелом. Пример входной строки: Требуется
написать как можно более эффективную программу (укажите используемую
версию языка программирования, например, Borland Pascal 7.0), которая
будет выводить на экран информацию, из какой школы было меньше всего
участников (таких школ может быть несколько). При этом необходимо
вывести информацию только по школам, пославшим хотя бы одного участника.
Следует учитывать, что N>=1000.Решение задачи №10. var a:array [1..99] of integer; {целочисленный массив с индексами от 1 до 99, будет содержать число учеников от каждой школы} c:char; {символьная переменная поможет нам считать фамилии и инициалы учеников} shol:1..99; {переменная shol будет принимать значение номера школа (от 1 до 99)} n,i,min:integer; {целочисленные переменные n - количество учеников, i - счетчик, min - минимальное количество учеников от школы} begin for i:=1 to 99 do {задаем цикл для обнуления массива} a[i]:=0; {все элементы массива равны 0} readln (n); {считываем количество учеников в нашем списке} for i:=1 to n do {цикл для считывания данных по каждому ученику} begin repeat {считываем символы до точки} read (c); until c='.'; repeat {считываем символы до точки} read (c); until c='.'; {мы считали фамилию и инициалы каждого ученика} read (shol); {считали номер школы} a[shol]:=a[shol]+1; {элементы массива с индексом shol будет увеличивать свое значение на 1, таким образом массив будет содержать количество учеников от каждой школы} end; min:=n; {переменная min принимает значение количества всех учеников в списке} for i:=1 to 99 do {задаем цикл для определения минимального количества школьников из из определенной школы} if (a[i]>0)and(a[i]<min) then min:=a[i]; {проверяем, если элемент массива больше нуля и меньше min значение переменной минимум принимает значение элемента массива, мы нашли минимальный элемент массива} for i:=1 to 99 do {в данном цикле выводим элементы массива равные минимальному элементу массива} if a[i]=min then writeln(i); {если элемент массива равен минимальному элементу массива, то выводим на экран индекс элемента массива (номер школы)} end. Алгоритм решения задачи
|
Реклама
Поиск
Статистика
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |