С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 08.11.2015
Сообщений: 4

Программа для работы со структурой Успеваемость студентов

24.12.2015, 22:10. Показов 5074. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Необходимо каждый пункт задания оформить в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.
2. Все структуры и функции должны бить сгруппированы в поименованную область и сохранены в отдельном файле (*.h).
Описать структуру с именем STUDENT, содержащую следующие поля; - фамилия и инициалы;
- номер группы;
- успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию среднего балла;
- вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5;
- если таких студентов нет, вывести соответствующее сообщение.

Помогите пожалуйста с функцией для нахождения и сравнения по успеваемости. То есть для начала мне нужно для каждого студента найти среднее значение массива(успеваемость) передавая это число в другой массив, а потом сравнивать по этому массиву?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2015, 22:10
Ответы с готовыми решениями:

Успеваемость студентов
Успеваемость студентов. Составить программу формирования данных о сту-дентах: Ф.И.О., № группы, оценки по 4 предметам. Организовать выбор...

БД Успеваемость Студентов
Всем Привет. Ребят у меня такая проблема я составил БД на тему "Успеваемость Студентов" так вот я сам все сделал только одна...

Успеваемость студентов
Здравствуйте, подскажите Разработка базы данных в СУБД Access и создание приложения «Успеваемость студентов» с использованием...

2
338 / 67 / 37
Регистрация: 22.12.2010
Сообщений: 138
24.12.2015, 22:38
Лучший ответ Сообщение было отмечено Lolikpve как решение

Решение

Популярная задача из книжки "Эффективное программирования" под авторством Э.Кёнига... Рекомендую к прочтению и стару, и младу.
собственно:
основной файл *.cpp
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <stdexcept>
#include "stud+marks.h"
#include <conio.h>
#include <typeinfo.h>
#include <locale.h>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL,"Russian");
    vector<Student_info> students;
    Student_info record;
    cout << "Шаблон:" << endl;
    cout << "_группа_ _ФИО_" <<endl;
    cout << "_оценка1_ _оценка2_...._оценкаN_"<<endl;
    cout << "^Z - конец входных данных для одного студента"<<endl<<endl;
    while (read_st(cin, record)) {
        students.push_back(record);
    }
 
    for (vector<Student_info>::size_type i = 0; i != students.size(); ++i) {
            try {
                students[i].average_mark = grade(students[i]);
                if (students[i].average_mark >= 4) {
                    cout << "Отличник или хорошист!" << students[i].name << " из группы #" << students[i].group << endl;
                }   
            } catch (domain_error e) {
                cout << e.what();
            }                   
            cout << endl;
        }
    cout << "Студенты в порядке возрастания средней оценки:" << endl;
    sort(students.begin(), students.end(), compare_grade);
    for (vector<Student_info>::size_type i = 0; i != students.size(); ++i) {
            cout << students[i].name << " из группы #" << students[i].group << " имеет "
                 << "следующий средний бал: " << students[i].average_mark << endl;
    }
    _getch();
    return 0;
}


файл "stud+marks.cpp" (у меня так назван)
Кликните здесь для просмотра всего текста
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 "stud+marks.h"
#include <algorithm>
#include <stdexcept>
#include <vector>
 
using namespace std;
 
istream& read_hw(istream& in, vector<double>& mk) {
        if (in) {
            mk.clear();
            double x;
            while (in >> x)
                mk.push_back(x);
            in.clear();
        }
        return in;  
}
 
istream& read_st(istream& is, Student_info& sname) {
    is >> sname.group;
    getline(is,sname.name);
    read_hw(is, sname.marks);
    return is;
}
 
double grade(const vector<double>& hw) {
        if (hw.size() == 0)
            throw domain_error("У студента нет оценок!");
        return average(hw);
}
 
double grade(const Student_info& st_grade) {
    return grade(st_grade.marks);
}
 
double average(vector<double> vec_marks) {
        typedef vector<double>::size_type vec_size;
        vec_size marks_count = vec_marks.size();
        if (marks_count == 0) {
            throw domain_error("Не введены оценки.");
        }
        double sum = 0;
        for(int i = 0; i != marks_count; ++i) {
            sum = sum + vec_marks[i];
        }
        return sum / marks_count;
}
 
bool compare_grade(const Student_info& x, const Student_info& y) {
    return x.average_mark < y.average_mark;
}



файл "stud+marks.h"
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef GUARD_stud_marks_h
#define GUARD_stud_marks_h
#include <iostream>
#include <vector>
#include <string>
struct Student_info {
    std::string name;
    std::string group;
    std::vector<double> marks;
    double average_mark;
};
double grade(double, double, const std::vector<double>&);
double grade(const Student_info&);
double average(std::vector<double>);
std::istream& read_hw(std::istream&, std::vector<double>&);
std::istream& read_st(std::istream&, Student_info&);
bool compare_grade(const Student_info&, const Student_info&);
#endif


Свистоперделки типа "отобразить сообщение, если нет хорошистов/отличников" и прочее думаю сам сможешь сделать (в моей проге людей с балом ниже 4 просто не выводит в первых сообщениях).
Скриншот работающей программы прикрепил
Миниатюры
Программа для работы со структурой Успеваемость студентов  
1
24.12.2015, 22:39

Не по теме:

Свистоперделки типа "отобразить сообщение, если нет хорошистов/отличников" и прочее думаю сам сможешь сделать (в моей проге людей с балом ниже 4 просто не выводит в первых сообщениях).:D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2015, 22:39
Помогаю со студенческими работами здесь

Успеваемость студентов
Нaписaть прогрaмму которaя вводит дaнные об успевaемости группы из n студентов по m предметaм, m и n вводится пользовaтелем по зaпросу в...

После окончания работы со структурой, она будет почищена сборщиком. Что произойдет со структурой в неуправляемой памяти
Доброго времени суток. Прочитал закрепленный топик &quot;Класс Marshal, использование PInvoke, небезопасный код (unsafe)&quot;. Возник...

БД на тему успеваемость студентов
Нужно создать БД на тему успешность студентов! введение справочников:институты, кафедры, студенты, предметы функции:ведение...

SQL Запрос Успеваемость студентов
Здравствуйте! Подскажите пожалуйста в следующем вопросе: имеется база данных &quot;Деканат&quot; в MS Access (базу прикладываю). Требуется...

Базу данных успеваемость студентов
Добрый день! Помогите пожалуйста, зделать Базу данных успеваемость студентов access


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru