С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 21
1

Вывести фамилии и имена всех студентов, имеющих максимальные стипендии на каждом курсе

15.03.2017, 11:33. Показов 6444. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На вход программе подаются сведения о студентах некоторого вуза. В первой строке
сообщается количество студентов N (не более 100). Каждая из следующих строк имеет формат:
<фамилия> <имя> <курс> <стипендия>
Все данные в строке разделяются одним пробелом. Фамилия состоит не более, чем из 20 символов,
имя – не более, чем из 15. Курс – целое число от 1 до 5, стипендия – целое число. Требуется написать
программу, которая будет выводить фамилии и имена всех студентов, имеющих максимальные
стипендии на каждом курсе.
Пример входных строк:
25
Федорова Ирина 5 4500
Семенов Илья 3 2800

Пример выходных строк:
Курс 1
Петров Иван
Иванов Сидор
Курс 3
Смирнов Максим
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2017, 11:33
Ответы с готовыми решениями:

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

Вывести фамилии, имена и отчества и средние баллы студентов, не получающих стипендии
1) Вывести фамилии,имена и отчества и средние баллы студентов, не получающих степендию

Вывести фамилии, имена и отчества всех студентов мужского пола, старших 18 лет
вывести фамилии, имена и отчества всех студентов мужского пола, старших 18 лет. Должна...

Вывести фамилии, имена и отчества всех студентов мужского пола, не сдавших более двух экзаменов
вывести фамилии, имена и отчества всех студентов мужского пола , не сдавших более двх экзаменов

2
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
15.03.2017, 13:46 2
Можно создать динамический массив структур, далее читаются в этот массив данные из файла. Потом идет анализ этих данных и выводятся необходимые сведения.
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
15.03.2017, 15:01 3
Лучший ответ Сообщение было отмечено TentacleMonster как решение

Решение

Не по теме:

Мне казалось, стипендия у всех одинаковая (по категориям).



Поддержка кириллицы обязательна?

Добавлено через 37 минут
Работает только с латиницей
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
#include <array>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
 
struct Student
{
    Student() : surname(), name(), course(0), stipend(0) {}
    std::string surname, name;
    int course;
    int stipend;
};
 
std::istream& operator>> (std::istream &ist, Student &st)
{
    ist >> st.surname >> st.name >> st.course >> st.stipend;
    return ist;
}
 
int main()
{
    std::ifstream ifs("input.txt");
    if (!ifs)
        return 1;
 
    std::array<std::vector<Student>, 5> arr;
    int N;
    Student tmp;
    ifs >> N;
    for (int i = 0; i < N && ifs >> tmp; i++)
    {
        auto &v = arr[tmp.course - 1];
        if (!v.empty() && v.front().stipend < tmp.stipend)
            v.clear();
        if (v.empty() || v.front().stipend == tmp.stipend)
            v.push_back(tmp);
    }
 
    for (size_t i = 0; i < arr.size(); i++)
        if (!arr[i].empty())
        {
            std::cout << "Course " << i + 1 << std::endl;
            for (const auto &st : arr[i])
                std::cout << st.surname << " " << st.name << std::endl;
        }
}
Добавлено через 7 минут
С поддержкой кириллицы
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
#include <array>
#include <codecvt>
#include <fstream>
#include <iostream>
#include <locale>
#include <string>
#include <vector>
 
struct Student
{
    Student() : surname(), name(), course(0), stipend(0) {}
    std::wstring surname, name;
    int course;
    int stipend;
};
 
std::wistream& operator >> (std::wistream &ist, Student &st)
{
    ist >> st.surname >> st.name >> st.course >> st.stipend;
    return ist;
}
 
int main()
{
    std::wifstream wifs("input.txt");
    if (!wifs)
        return 1;
    wifs.imbue(std::locale(wifs.getloc(), new std::codecvt_utf8<wchar_t>));
    setlocale(LC_ALL, "");
 
    std::array<std::vector<Student>, 5> arr;
    int N;
    Student tmp;
    wifs >> N;
    for (int i = 0; i < N && wifs >> tmp; i++)
    {
        auto &v = arr[tmp.course - 1];
        if (!v.empty() && v.front().stipend < tmp.stipend)
            v.clear();
        if (v.empty() || v.front().stipend == tmp.stipend)
            v.push_back(tmp);
    }
 
    for (size_t i = 0; i < arr.size(); i++)
        if (!arr[i].empty())
        {
            std::wcout << L"Course " << i + 1 << std::endl;
            for (const auto &st : arr[i])
                std::wcout << st.surname << L" " << st.name << std::endl;
        }
}
1
15.03.2017, 15:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2017, 15:01
Помогаю со студенческими работами здесь

Создать класс с STUDENT, вывести на экран фамилии и номеров групп для всех студентов, имеющих оценки 4 и 5
Не могу, жизни и смерти, я не понимаю как это сделать, помогите Класс с именем STUDENT, содержащий...

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

Отсортировать массив структур (фамилии студентов и размер их стипендии) по размеру стипендии
Помогите с задачей Условие:&quot;заданный тип структур что содержатся следующие сведения какие фамилии...

Записи. Для заданной группы вывести фамилии студентов не получивших стипендии
для заданной группы вывести фамилии студентов не получивших стипендии. Вычислить сколько из них...


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

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