Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Lolikpve
0 / 0 / 0
Регистрация: 08.11.2015
Сообщений: 4
#1

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

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

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

Помогите пожалуйста с функцией для нахождения и сравнения по успеваемости. То есть для начала мне нужно для каждого студента найти среднее значение массива(успеваемость) передавая это число в другой массив, а потом сравнивать по этому массиву?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2015, 22:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Программа для работы со структурой Успеваемость студентов (C++):

Успеваемость студентов
Успеваемость студентов. Составить программу формирования данных о сту-дентах:...

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

Не могу найти ошибку в работе со структурой студентов
не могу найти ошибку. помогите! #include <stdio.h> #include <io.h> #include...

Программа выводит неверный ответ (дан массив структур, содержащий сведения об успеваемости студентов - вывести список неуспевающих студентов)
Задача: Дан массив структур, содержащий сведения об успеваемости по...

Структура tree. Функция работы с этой структурой
Привет. В книге (неважно какой), есть пример такого кода: struct tree { int...

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

2
DocC
336 / 65 / 37
Регистрация: 22.12.2010
Сообщений: 138
24.12.2015, 22:38 #2
Лучший ответ Сообщение было отмечено 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
Миниатюры
Программа для работы со структурой Успеваемость студентов  
anti-k
24.12.2015, 22:39     Программа для работы со структурой Успеваемость студентов
  #3

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2015, 22:39
Привет! Вот еще темы с ответами:

Программа со структурой do while
Покупатель должен заплатить в кассу S рублей. У него имеются купюры...

Программа со структурой
Задали мне написать такую прогу: 1) Вводим имя человека, его дату рождения 2)...

Реализовать алгоритм работы с динамической структурой данных – однонаправленный список
Нужно срочно решение задачки!! Помогите, кто может!!!! Реализовать алгоритм...

Программа со структурой, не дает себя заполнить
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; struct...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru