Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
2 / 1 / 1
Регистрация: 01.10.2020
Сообщений: 22
1

Вывести 2 лучших результатов

18.02.2021, 17:46. Показов 1048. Ответов 2

Author24 — интернет-сервис помощи студентам
Имеется список учеников разных школ, сдававших экзамен по информатике, с указанием их фамилии, имени, школы и набранного балла. Напишите эффективную по времени работы и по используемой памяти программу, которая будет определять двух учеников школы № 50, которые лучше всех сдали информатику, и выводить на экран их фамилии и имена. Если наибольший балл набрали более двух человек, нужно вывести только их количество. Если наибольший балл набрал один человек, а следующий балл набрало несколько человек, нужно вывести только фамилию и имя лучшего. Известно, что информатику сдавали не менее 5 учеников школы № 50.

Входные данные
На вход программе в первой строке подается количество учеников списке N. В каждой из последующих N строк находится информация в следующем формате: <Фамилия> <Имя> <Школа> <Балл> где <Фамилия> – строка, состоящая не более, чем из 20 символов без пробелов, <Имя> – строка, состоящая не более, чем из 20 символов без пробелов, <Школа> – целое число от 1 до 99, <Балл> – целое число от 1 до 100.

Выходные данные
Если больше двух учеников набрали высший балл, то программа должна вывести их количество. Если высший балл набрал один человек, а следующий балл набрало несколько человек, то программа должна вывести только фамилию и имя лучшего.


Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include  <iostream>
#include  <cstring>
 
using namespace std;
int main(){
 
    int n, count1 = 0, count2 = 0;
    string N, tmp = "";
    getline(cin, N);
    n = stoi(N);
    string st [n];
    string name [n];
    string surname [n];
    int score [n];
 
    for(int i = 0; i < n; i++){
        getline (cin, st[i]);
        }
    for(int i = 0; i < n; i++){
            tmp += st[i];
            surname[i] += tmp.substr(0, tmp.find(' '));
            tmp.erase(0 , (tmp.find(' ') + 1));
            name[i] += tmp.substr(0, tmp.find(' '));
            tmp.erase(0 , (tmp.find(' ') + 1));
            tmp.erase(0 , (tmp.find(' ') + 1));
            score[i] = stoi(tmp.substr(0, tmp.size()));
            tmp = "";
        }
      int  max1 = score[0];
      int  max2 = score[0];
     for(int i = 1; i < n; ++i)
    {
    if (score[i] > max1){
        max2 = max1;
        max1 = score[i];
        }
    else if (score[i] > max2){
        max2 = score[i];
        }
    }
        for(int i = 0; i < n; i++){
        if (score[i] == max1){
           count1 ++;}
        if(score[i] == max2){
                count2++;}
    }
        if((count1 == 1 && count2 > 1) || count1 == 2){
        for(int i = 0; i < n; i++){
        if (score[i] == max1){
            cout << surname[i] <<" "<< name [i] << endl;
                }
            }
        }
    else if (count1 == 1 && count2 == 1){
             for(int i = 0; i < n; i++){
            if (score[i] == max1) {
            cout << surname[i] <<" "<< name [i] << endl;}
            else if (score[i] == max2){
            cout << surname[i] <<" "<< name [i] << endl;}
             }
    }
    else if (count1 > 2){
        cout << count1;
    }
    return 0;
}
Скажите пожалуйста что не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2021, 17:46
Ответы с готовыми решениями:

Вывести трех лучших учеников
данные хранятся в файле. дано 25учеников сдавших егэ. пример Иванов Петр 5 5 5 ...

Вывести результаты трёх лучших участников соревнований и их фамилии
В ЭВМ поступают фамилии и результаты N участников соревнований по плаванию и их фамилии. Вывести...

Вывести результаты трёх лучших участников соревнований и их фамилии
В ЭВМ поступают фамилии и результаты N участников соревнований по плаванию и их фамилии. Вывести...

Структуры: вывести фамилии трех лучших учеников данного класса
Анкета школьника включает в себя Ф.И.О., номер школы, номер класса и оценки по пяти предметам....

2
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.02.2021, 17:58 2
Tenefier, посмотрите тему структура, массив структур
0
2 / 1 / 1
Регистрация: 01.10.2020
Сообщений: 22
18.02.2021, 19:03  [ТС] 3
Такое юзать на нашей инфе нелегально, у нас почти всё нелегально.
0
18.02.2021, 19:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2021, 19:03
Помогаю со студенческими работами здесь

Вывести список лучших результатов по информатике
Здравствуйте.Есть задача: Решил ее так: var s,smax,smax2:string; c:char;...

Нахождение лучших результатов
Есть массив результатов забега (в секундах), показать три лучших результата в забеге. Если...

Список лучших результатов в игре
игра на VB .NET Compact Framework v.2 (для pocket pc) Задача: 1) сохранить лучшие результаты (2...

Запрос на вывод лучших результатов
Здавствуйте форумчане. Имеется таблица test в которой 2 поля: name (varchar), rank(int). Таблица...

Задача поиск лучших результатов спортсменов
с целью выявления лучших спортсменов года М журналистам был представлен список из К спортсменов в...

Среди результатов соревнований по лыжным гонкам, вводимых пользователем, вычислить три лучших результата
Помогите пожалуйста: Среди результатов соревнований по лыжным гонкам, вводимых пользователем,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru