Главная » 2017 » Сентябрь » 25 » Разбор задания по анализу информации
11:18
Разбор задания по анализу информации

После еди­ных выпускных эк­за­ме­нов по ин­фор­ма­ти­ке в район при­ш­ла информация о том, какой уче­ник какой школы сколь­ко баллов набрал.

Районный ме­то­дист решила вы­яс­нить номер школы, уче­ни­ки которой на­бра­ли наибольший сред­ний балл, с точ­но­стью до целых.

Программа долж­на вывести на экран номер такой школы и её сред­ний балл.

Если наи­боль­ший средний балл на­бра­ло больше одной школы — вы­ве­сти количество таких школ.

Напишите эффективную, в том числе и по ис­поль­зу­е­мой памяти, про­грам­му (укажите ис­поль­зу­е­мую версию языка программирования, на­при­мер Borland Pascal 7.0), ко­то­рая должна вы­ве­сти на экран тре­бу­е­мую информацию. Известно, что ин­фор­ма­ти­ку сдавало боль­ше 5-ти уче­ни­ков района. Также известно, что в рай­о­не школы с не­ко­то­ры­ми номерами не существуют.

На вход про­грам­ме сначала подаётся число учеников, сда­вав­ших экзамен. В каж­дой из сле­ду­ю­щих N строк на­хо­дит­ся информация об уче­ни­ках в формате:

 

<Фамилия> <Имя> <Номер школы> <Количество баллов>

 

где <Фамилия> — строка, со­сто­я­щая не более чем из 30 сим­во­лов без пробелов,

<Имя> — строка, со­сто­я­щая не более чем из 20 сим­во­лов без пробелов,

<Номер школы> — целое число в диа­па­зо­не от 1 до 99,

<Количество баллов> — целое число в диа­па­зо­не от 1 до 100.

Эти дан­ные записаны через пробел, причём ровно один между каж­дой парой (то есть всего по три про­бе­ла в каж­дой строке).

Пример вход­ной строки:

Иванов Иван 50 87

Пример вы­ход­ных данных:

50 74

Другой ва­ри­ант выходных данных:

7

Решение

#include<iostream>

#include<string>

using namespace std;

void main() {

                string s, t;

                int a[99], l[99], n, ns,b,m=1,mx;

                cin >> n;

                for (int i = 1; i <= 99; i++) {

                                a[i] = 0;

                                l[i] = 0;

                }

                for (int i = 0; i < n; i++) {

                                cin >> s >> t >> ns >> b;

                                a[ns] += b;

                                l[ns]++;

                }

                for (int i = 1; i <= 99; i++)

                                if (l[i] > 0)

                                               a[i] = a[i] / l[i];

                for (int i = 1; i <= 99; i++) {

                                if (a[i] > a[m]) {

                                               m = i;

                                               mx = 1;

                                }

                                else if (a[i] == a[m])

                                               mx++;

                }

                if (mx == 1)

                                cout << m << "  " << a[m];

                else

                                cout << mx;

}

Просмотров: 251 | Добавил: Надежда_Халтурина | Рейтинг: 0.0/0
Всего комментариев: 0
avatar