Форум программистов, компьютерный форум CyberForum.ru

Список студентов (структуры) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу, которая вызывает функцию, а также осуществляет ввод матрицы целых чисел http://www.cyberforum.ru/cpp-beginners/thread1219322.html
Привести пример функции, устанавливающий факт симметричности квадратной матрицы относительно главной диагонали. Составить программу, которая вызывает функцию, а также осуществляет ввод матрицы целых чисел (построчно) и вывод результата, возвращаемого подпрограммой. Спасибо если напишете и объясните как работает она.
C++ Работа с указателями #include <iostream> #include <conio.h> using namespace std; void fun(int *p) { int *temp=new int; *temp=15; delete p; p=&*temp; http://www.cyberforum.ru/cpp-beginners/thread1219289.html
C++ Проверка содержимого string/TextBox
Доброго времени суток! Имеется строка TextBox, которую я перевожу в string, дабы затем поместить в переменную типа int, однако в случае ввода пользователем не числа, а любого другого символа, естественно, программа работать не может. Пожалуйста, подскажите: как можно реализовать проверку содержимого вводимой строки? Заранее благодарю за ответ.
Переписать элементы массива a в массив в, удвоив все элементы C++
переписать элементы массива А в массив В, удвоив все элементы, которые меньше первого элемента массива А, остальные переписать без изменений. Массив А заполняется случайными числами. помогите решить пожалуйста
C++ Максимально возможное число из трёх цифр http://www.cyberforum.ru/cpp-beginners/thread1219225.html
"Пользователь вводит с клавиатуры трехзначное натуральное число, которое сохраняется в переменную n проверить корректность ввода, составить и вывести на экран число из цифр введенного числа n, так, чтобы выведенное число оказалось максимальным из возможных. Например, если пользователь ввел число 195, то программа должна вывести число 951."
C++ Некорректное значение числа при заполнении массива рандомными действительными числами Заполняю массив рандомными действительными числами.Иногда выходит такое значение числа,как в вложенном изображении.Строка 4,столбец 1:1.#J.И так как данная строка стоит в выводе-значит данный элемент максимальный по строке и стоит на 1 позиции(по условию задачи).Только почему отображается таким образом? подробнее

Показать сообщение отдельно
NanoBreaker
 Аватар для NanoBreaker
23 / 23 / 7
Регистрация: 11.07.2013
Сообщений: 85
29.06.2014, 15:52     Список студентов (структуры)
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
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
//структура, которая хранит данные о нашем студенте
struct student
{
    string student_name;
    short int group_number;
    short int mark;
 
    student(string student_name_, short int group_number_, short int mark_) : student_name(student_name_), group_number(group_number_), mark(mark_) {};
    ~student(){};
};
 
//функция, чтоб мы смогли отсортировать наших студентов по группам
bool compare_students(student s1, student s2)
{
    return s1.group_number < s2.group_number;
}
 
int main(void)
{
    setlocale(LC_ALL, "Russian");
 
    vector<student> students;
    short int number_of_students = 0;
 
    cout << "Введите кол-во студентов: ";
    cin >> number_of_students;
 
    //вводим студентов
    for (int i = 1; i <= number_of_students; i++)
    {
        string buff_s1, buff_s2, buff_s3;
        short int buff_i1;
        short int buff_i2;
 
        cout << "Студент N" << i << endl;
        cout << "Ф.И.О : "; cin >> buff_s1 >> buff_s2 >> buff_s3;
        cout << "Номер группы : "; cin >> buff_i1;
        cout << "Оценка студента : "; cin >> buff_i2;
 
        student buff = { buff_s1 + ' ' + buff_s2 + ' ' + buff_s3, buff_i1, buff_i2 };
        students.push_back(buff);
        cout << endl;
    }
 
    int marks = 0;
    int max_mark = 0;
    int current_group = 0;
    int group_with_h_mark = 0;
 
    //сортируем по группам
    sort(students.begin(), students.end(), compare_students);
 
    //прохожусь по каждой группе и нахожу её суммарную оценку, если она больше изначальной оценки( = 0 )
    //то тогда это значение становится максимальным, и при этом сохраняю номер группы, чтоб вывести его в конце
    current_group = students[0].group_number;
    for_each(students.begin(), students.end(), [&marks, &max_mark, &current_group, &group_with_h_mark](student s)
    {
        if (current_group != s.group_number)
        {
            if (max_mark < marks) {max_mark = marks; group_with_h_mark = current_group;}
            current_group = s.group_number;
            marks = 0;
        }
        marks += s.mark;
    });
 
    cout << "Группа сумма оценок в которой больше остальных: " << group_with_h_mark << endl;
 
    system("PAUSE");
    return 0;
}
Добавлено через 48 минут
Если надо среднее арифметическое, то тогда добавь еще одну переменную, которая будет считать кол-во студентов, добавь вычисление marks/кол-во учащихся перед проверкой, и не забудь поменять типы данных int на float. Так же не забудь её обнулять, там же где и marks.
 
Текущее время: 17:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru