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

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

24.12.2015, 22:10. Показов 5077. Ответов 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
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 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. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru