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

Массив "Студенты". Выведите на экран дисциплину, которую не желают изучать большинство студентов

11.05.2015, 10:24. Показов 1194. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, с заданием по с++.
Сформируйте массив, содержащий сведения о том, какие из пяти предлагаемых дисциплин по выбору желает изучить студент: фамилия студента, факультет, номер группы, пять дисциплин, средний балл успеваемости. Выбираемая дисциплина отмечается символом 1, иначе 0. Напишите программу, которая выдает информацию о студентах в порядке убывания среднего балла. Выведите на экран дисциплину, которую не желают изучать большинство студентов.
Заранее большое спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2015, 10:24
Ответы с готовыми решениями:

Определить дисциплину, которую более всего желают прослушать студенты
Составить программу для обработки информации в соответствии с вариантом. Для этого создать...

Вывести на экран список студентов, желающих слушать дисциплину Х
помогине пожалуйста!) напишите программу на Visual Basic 6!! Создать файл, содержащий сведения о...

Выведите четные элементы в другой одномерный массив. Выведите массивы на экран
Заполните массив а случайными символами в диапозоне - диапозон от 1-255. Выведите четные элементы в...

Список студентов, желающих слушать дисциплину X
помогите пожалуйста написать программу в Access, которая печатает список студентов, желающих...

Определить профессию, которую имеют большинство сотрудников
Данный код создает список из вводимых значений по 3-м критериям - фамилия, пол, профессия. Нужно...

7
Модератор
Эксперт JS
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
11.05.2015, 13:20 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Использовать C++11

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <string>
#include <vector>
#include <exception>
#include <algorithm>
 
class invalid_initializer_list : public std::exception {
public:
    virtual const char* what () const noexcept {
        return "Initialzier list must have 5 members";
    }
};
 
std::string disciplines[] = { "Physics", "Computer science", "Mathematics", "Operational research", "General engineering" };
 
struct Student {
    std::string surname, faculty;
    int group;
    int chase[5]; // Раз уж символ 1 или 0, хотя я бы сделал bool...
    int average_score;
    Student(std::string s, std::string f, int g, const std::initializer_list<int>& c, int a) :
    surname(s), faculty(f), group(g), average_score(a) {
        if (c.size() != 5) throw invalid_initializer_list();
        std::copy(c.begin(), c.end(), chase);
    }
};
 
template<size_t SIZE>
std::string disciplines_to_s(const int (&arr)[SIZE]){
    std::string acc;
    int n = 0;
    std::for_each(std::begin(arr), std::end(arr), [&acc, &n] (int a) {
        if (a) {
            if (n) acc += ", ";
            acc += disciplines[n];
        }
        ++n;
    });
    return acc;
}
 
std::ostream& operator << (std::ostream& str, const Student& s) {
    return str <<
        "Surname: " << s.surname <<
        ", facluty: " << s.faculty <<
        ", group: " << s.group <<
        ", average score: " << s.average_score <<
        ", chosen disciplines: " << disciplines_to_s(s.chase) << std::endl;
}
 
int main ( ) {
    Student arr[] = {
        Student("Pupkin", "Maths and computer science", 101, { 0, 1, 1, 0, 0 }, 240),
        Student("Vasechkin", "Aerospace engineering", 201,   { 1, 1, 1, 0, 1 }, 260),
        Student("Morozov", "Civil engineering", 204,         { 1, 0, 1, 1, 1 }, 250)
    };
    
    std::sort(std::begin(arr), std::end(arr), [ ] (Student& a, Student& b) -> bool {
        return a.average_score > b.average_score;
    });
    
    std::for_each(std::begin(arr), std::end(arr), [ ] (Student& a) { 
        std::cout << a; 
    });
    
    std::pair<int, int> popularity[5];
    int n = 0;
    std::generate(std::begin(popularity), std::end(popularity), [&n, &arr] () -> std::pair<int, int> {
        int t = std::count_if(std::begin(arr), std::end(arr), [&n] (Student& ref) -> bool {
            return ref.chase[n];
        });
        ++n;
        return std::pair<int, int>(n - 1, t);
    });
    
    
    std::sort(std::begin(popularity), std::end(popularity), [ ] (std::pair<int, int>& a, std::pair<int, int>& b) -> bool {
        return a.second < b.second;
    });
    
    std::cout << "\nThe least popualar discipline: " << disciplines[popularity[0].first] << std::endl;
    
    return 0;
}
0
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 53
11.05.2015, 18:45  [ТС] 3
На 34 строчке в кавычках ничего писать не нужно?

Добавлено через 1 час 5 минут
58 ошибок при компиляции
0
Модератор
Эксперт JS
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
11.05.2015, 18:47 4
Иван Толпыгин,
Цитата Сообщение от FraidZZ Посмотреть сообщение
Использовать C++11
Добавлено через 20 секунд
Какой компилятор у Вас?

Добавлено через 37 секунд
Цитата Сообщение от Иван Толпыгин Посмотреть сообщение
в кавычках ничего писать не нужно?
Там же запятая стоит.
0
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 53
11.05.2015, 18:53  [ТС] 5
Microsoft Visual Studio. В нем работаю

Добавлено через 35 секунд
Уже 13 ошибок
0
Модератор
Эксперт JS
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
11.05.2015, 19:06 6
Иван Толпыгин, обновитесь до самой последней.

Добавлено через 18 секунд
И это - текст ошибок выложите.
0
0 / 0 / 0
Регистрация: 11.05.2015
Сообщений: 53
11.05.2015, 19:15  [ТС] 7
Я пока далеко от компа. Насчет ошибок, точек с запятой должно быть побольше и скобок.
0
Модератор
Эксперт JS
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
11.05.2015, 20:01 8
Цитата Сообщение от Иван Толпыгин Посмотреть сообщение
точек с запятой должно быть побольше и скобок.
Все на месте.

Добавлено через 31 секунду
Поверьте, я компилировал и проверял, прежде чем выложить на форум
0
11.05.2015, 20:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2015, 20:01
Помогаю со студенческими работами здесь

Определить профессию, которую имеют большинство сотрудников
Как определить профессию, которую имеют большинство сотрудников? const n=10; v=6; type...

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

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

Найти букву, на которую начинается большинство слов в тексте
Помогите пожалуйста с программой.Найти букву, на которую начинается большинство слов в тексте.

Найти букву на которую заканчиваются большинство слов в строке
Нужно найти букву на которую заканчиваются большинство слов в строке.


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

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