Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Vova222
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 44
#1

Классы. Найти студентов академической группы со средним баллом более 75 баллов - C++

17.05.2015, 15:25. Просмотров 785. Ответов 22
Метки нет (Все метки)

Всем привет!
Маю вот такую задачу.
Создать класс TStudent в котором предусмотреть: атрибуты имя , фамилия , группа , массив оценок за семестр. Реализовать метод нахождения фамилий всех студентов академической группы со средним баллом более 75 баллов. Реализовать более 14 объектов потомков класса TStudent .
Впринципе часть написал кода, а доделать как то немогу. Обясните пожалуйста как мне реализовать чтобы выкидувало студентов з оценками больше 75.
Спасибо!)


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
[ASM]#include "iostream"
#include <stdlib.h>
using namespace std;
int m;
class TStudent {
    protected:
char name[30];
char surname[30];
char grup[30];
 
 
public:   TStudent(){};
void get(){
        cout << "Enter name: " ;cin >> name; 
        cout<<"Enter surname: "; cin>> surname;
        cout<<"Enter grup: "; cin>>grup; }
    };
    
    
    
    class Marks : public TStudent{
        int Mod1,Mod2,Kpiz,Rektorska;
    public:
        
void Get (){
        cout << "Enter marks "<<endl; 
        cout<<"Modull 1: ";cin>>Mod1;
        cout<<"Modull 2: ";cin>>Mod2;
        cout<<"Kpiz: ";cin>>Kpiz;
        cout<<"Rektorska: ";cin>>Rektorska;
    }
int obn(){
    m=Mod1+Mod2+Kpiz+Rektorska;
    if(m>=75)
        cout<<"Stependia";
       }
};
 
 
int main(){
 
TStudent f[2];
Marks last[2];
 
 
for (int i = 0; i < 2; i++){
    cout<<"__________________"<<endl<<endl;
    cout<<"Student "<<i+1<<endl;
      f[i].get();
      last[i].Get();
      } 
      
      
      switch(m>=75){
    case 1:{
    for (int i = 0; i < 2; i++){
    last[i].obn();}
    cout<<"Students with 75+: "<<endl;
    }
break;
}
       
    
system("pause");} [/ASM]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2015, 15:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Классы. Найти студентов академической группы со средним баллом более 75 баллов (C++):

Структура "Студент". Вычислить средний балл группы и распечатать список студентов с низким средним баллом - C++
Ввести сведения о 8 студентах:фамилия, год рождения, рейтинг по предметам:алгоритмизация, история, дискретный анализ. Вычислить средний...

В группе студентов определи средний балл каждого за последнюю сессию, распечатать Ф.И.О. студентов со средним баллом не меньше 4, остальных рассор - C++
Пожалуйста помогите с программой ,очень необходима! С обязательным применением функций, исходные данные или результат или и то и другое...

Класс "Студент", найти студентов со средним баллом больше заданного - C++
Вводится база из 7 студентов(Ф И О, средний бал аттестата) – выводится на экран ср. бал больше 4. помогите с решением, все, на что...

Определить двух студентов с наивысшим средним баллом. - C++
С текстового файла считать последовательность записей, содержащих данные о результатах сессии студентов группы в следующем формате:...

Структуры в С++ и вывод студентов со средним баллом больше 7. Исправить код - C++
Помогите с заданием, кто понимает. Составить программу формирования файла, содержащего Ведомость студентов, сдававших сессию, содержит...

Распечатать список студентов со средним баллом выше общего среднего балла - C++
Вычислить общий средний балл всех студентов и распечатать список студентов со средним баллом выше общего среднего балла.

22
Черный мечник
48 / 49 / 17
Регистрация: 29.12.2012
Сообщений: 436
17.05.2015, 16:01 #2
C++
1
2
3
4
5
6
7
8
9
class TStudent {
void get()
};
void TStudent::get()
{
        cout << "Enter name: " ;cin >> name; 
        cout<<"Enter surname: "; cin>> surname;
        cout<<"Enter grup: "; cin>>grup; }
    };
Добавлено через 1 минуту
Еслиб писали так то сразу видели где ошиблис и код стал невероятно понятным

Добавлено через 43 секунды
В классе должны быть только обьявления функций.
1
hoggy
6813 / 3001 / 516
Регистрация: 15.11.2014
Сообщений: 6,794
Завершенные тесты: 1
17.05.2015, 16:04 #3
Цитата Сообщение от Черный мечник Посмотреть сообщение
В классе должны быть только обьявления функций.
ложь.
0
Соловьёв_Егор
58 / 58 / 38
Регистрация: 17.02.2013
Сообщений: 242
17.05.2015, 16:24 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
TStudent.h
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
#include <string>
 
using namespace std;
 
class TStudent
{
public:
    TStudent();
 
    void SetName(string str);
    void SetSurname(string str);
    void SetGroup(string str);
    void SetMarks(int m[5]);
 
    string GetGroup();
    string GetName();
    string GetSurname();
    int GetMark(int index);
 
    ~TStudent();
 
private:
    string name, surname, group;
    int marks[5];
};
TStudents.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
#include "TStudent.h"
 
TStudent::TStudent()
{
}
 
void TStudent::SetName(string str){
    name = str;
}
 
void TStudent::SetSurname(string str){
    surname = str;
}
 
void TStudent::SetGroup(string str){
    group = str;
}
 
void TStudent::SetMarks(int m[5]){
    for (int i = 0; i < 5; i++){
        marks[i] = m[i];
    }
}
 
string TStudent::GetGroup(){
    return group;
}
 
string TStudent::GetName(){
    return name;
}
 
string TStudent::GetSurname(){
    return surname;
}
 
int TStudent::GetMark(int index){
    return marks[index];
}
 
TStudent::~TStudent()
{
}
main.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
52
53
54
55
56
57
58
59
60
61
#include "iostream"
#include <stdlib.h>
#include "TStudent.h"
#include "string";
 
using namespace std;
 
int main(int argc, char **argv){
    TStudent *students[14];
    string temp;
    int m[5] = { 0, 0, 0, 0, 0 };
    cout << "Enter: \n\n";
 
    for (int i = 0; i < 14; i++){
        students[i] = new TStudent();
        cout << "Enter name: ";
        cin >> temp;
        students[i]->SetName(temp);
 
        cout << "Enter surname: ";
        cin >> temp;
        students[i]->SetSurname(temp);
 
        cout << "Enter group: ";
        cin >> temp;
        students[i]->SetGroup(temp);
 
        for (int j = 0; j < 5; j++){
            cout << "Enter a mark: ";
            cin >> m[j];
        }
 
        students[i]->SetMarks(m);
        cout << "\n";
    }
 
    int k;
 
    for (int i = 0; i < 14; i++){
        if (students[i]->GetGroup() == "Akadem"){
            k=0;
            for (int j = 0; j < 5; j++){
                k += students[i]->GetMark(j);
            }
 
            k /= 5;
 
            if (k>75){
                cout << "Name: " << students[i]->GetName() << "\n";
                cout << "Surname: " << students[i]->GetSurname() << "\n";
                cout << "Grade point average: " << k << "\n";
            }
        }
 
        delete students[i];
    }
 
    system("PAUSE");
 
    return 0;
}
Добавлено через 6 минут
C++
1
2
class Marks : public TStudent{
        int Mod1,Mod2,Kpiz,Rektorska;
А почему класс Marks наследует TStudent?
1
Черный мечник
48 / 49 / 17
Регистрация: 29.12.2012
Сообщений: 436
17.05.2015, 16:41 #5
hoggy, Глядя на класс этот пусть правдой будет
0
Vova222
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 44
17.05.2015, 18:50  [ТС] #6
Соловьёв_Егор, Привет, смотрел твой код. Чето никак немогу разобратса как оно работает (Только начинающий програмист). Можно ли както даную програму переписать чтобы новачку хорошо было понятно?
Буду очень благодрен!!
0
Соловьёв_Егор
58 / 58 / 38
Регистрация: 17.02.2013
Сообщений: 242
17.05.2015, 18:57 #7
Цитата Сообщение от Vova222 Посмотреть сообщение
Соловьёв_Егор, Привет, смотрел твой код. Чето никак немогу разобратса как оно работает (Только начинающий програмист). Можно ли както даную програму переписать чтобы новачку хорошо было понятно?
Буду очень благодрен!!
А что именно непонятно?
0
Vova222
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 44
17.05.2015, 19:01  [ТС] #8
Соловьёв_Егор, Ну ваша програма как то разходитса на три части. Вот мы в инстетуте ище такова не учили. Поетому непонятно как работают они по частям, и как правильно нужно ее запустить. Ну и хотел спросить есть ли вариант написать прогу както в одном целом?
P.S Спасибо за ответ!
0
Соловьёв_Егор
58 / 58 / 38
Регистрация: 17.02.2013
Сообщений: 242
17.05.2015, 19:12 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ну, вообще, обычно описание класса производится в .h файле, а реализация в .cpp. Здесь именно так и сделано. А объекты класса создаются уже в функции main, которая вынесена в отдельный файл. И всё-таки, что с классом Marks? Почему он наследует TStudent?

Добавлено через 4 минуты
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <string>
#include "iostream"
#include <stdlib.h>
 
using namespace std;
 
class TStudent
{
public:
    TStudent(){
    };
 
    void SetName(string str){
        name = str;
    };
 
    void SetSurname(string str){
        surname = str;
    };
 
    void SetGroup(string str){
        group = str;
    };
 
    void SetMarks(int m[5]){
        for (int i = 0; i < 5; i++){
            marks[i] = m[i];
        }
    };
 
    string GetGroup(){
        return group;
    };
 
    string GetName(){
        return name;
    };
 
    string GetSurname(){
        return surname;
    };
 
    int GetMark(int index){
        return marks[index];
    };
 
    ~TStudent(){
    };
 
private:
    string name, surname, group;
    int marks[5];
};
 
int main(int argc, char **argv){
    TStudent *students[14];
    string temp;
    int m[5] = { 0, 0, 0, 0, 0 };
    cout << "Enter: \n\n";
 
    for (int i = 0; i < 14; i++){
        students[i] = new TStudent();
        cout << "Enter name: ";
        cin >> temp;
        students[i]->SetName(temp);
 
        cout << "Enter surname: ";
        cin >> temp;
        students[i]->SetSurname(temp);
 
        cout << "Enter group: ";
        cin >> temp;
        students[i]->SetGroup(temp);
 
        for (int j = 0; j < 5; j++){
            cout << "Enter a mark: ";
            cin >> m[j];
        }
 
        students[i]->SetMarks(m);
        cout << "\n";
    }
 
    int k;
 
    for (int i = 0; i < 14; i++){
        if (students[i]->GetGroup() == "Akadem"){
            k = 0;
            for (int j = 0; j < 5; j++){
                k += students[i]->GetMark(j);
            }
 
            k /= 5;
 
            if (k>75){
                cout << "Name: " << students[i]->GetName() << "\n";
                cout << "Surname: " << students[i]->GetSurname() << "\n";
                cout << "Grade point average: " << k << "\n";
            }
        }
 
        delete students[i];
    }
 
    system("PAUSE");
 
    return 0;
}
Вот всё в одном файле.
1
Vova222
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 44
17.05.2015, 19:21  [ТС] #10
Соловьёв_Егор, Думал что клас Marks должен ево наследовать чтобы было как одно целое.
Аааа понял, кстати если реализовывать класс через .h он должен быть в одной папке з кодом? А вызываем ево include <> правильно?
Спасибо за код, буду сейчас разбираться)
0
Соловьёв_Егор
58 / 58 / 38
Регистрация: 17.02.2013
Сообщений: 242
17.05.2015, 19:29 #11
Если #include пишется с "", то поиск начинается с папки, в которой лежит проект, а потом уже дело доходит до директории с заголовочными файлами среды разработки, а если <>, то поиск сразу идёт в директории с заголовочными файлами. Файлы, относящиеся к твоей программе, желательно располагать в одной папке.
0
Vova222
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 44
17.05.2015, 19:32  [ТС] #12
Соловьёв_Егор, Хотел ище спросить, сматрите у меня ета програма работает так: Ввожу даные и оно сними ниче не делает. Как зделать, чо если бал у них менше 75, то студента выкидывало из списка?

Разработать для предложенных согласно вариантов родительских классов два дочерних классы. В каждом из них предусмотреть как минимум 2 новых атрибуты и 2 метода.

Вот поетому я старался както зделать дочерные классы и добавить 2 атрибута и 2 метода. Но тоже ниче не палучалось
0
Соловьёв_Егор
58 / 58 / 38
Регистрация: 17.02.2013
Сообщений: 242
17.05.2015, 19:36 #13
А как вообще задание звучит? А то я не понял ничего про новые атрибуты и методы.
Насчёт студентов, у которых средний ниже 75. Они просто не выводятся на экран. Если нужно убрать их из массива, то сначала необходимо сместить все элементы массива, начиная с позиции i+1 до конца массива, а потом последний элемент удалить с помощью delete. В противном случае, можно использовать такой тип данных, как vector или list. Они сами смещают все элементы влево при удалении и расширяются при добавлении элементов.
0
Vova222
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 44
17.05.2015, 19:43  [ТС] #14
Соловьёв_Егор, Задания звучит так.
Создать класс TStudent в котором предусмотреть: атрибуты имя, фамилия, группа, массив оценок за семестр. Реализовать метод нахождения фамилий всех студентов академической группы со средним баллом более 75 баллов. Реализовать более 14 объектов потомков класса TStudent. (Разработать в классе TStudent два дочерних классы. В каждом из них предусмотреть как минимум 2 новых атрибуты и 2 метода.)

Вот какраз и учу как работать з классами. В ютубе нашел уроки по с++. Тяжело как то. (А ище нам сказали писать не на Visual а на Dev. Там силное отличия у них?)
Спасибо за ответ!
0
Соловьёв_Егор
58 / 58 / 38
Регистрация: 17.02.2013
Сообщений: 242
17.05.2015, 19:51 #15
То есть, нахождение студентов - это ещё и отдельный метод. Ладно, это поправимо. А вот насчёт вложенного класса я не совсем понял. Каково его назначение?
0
17.05.2015, 19:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2015, 19:51
Привет! Вот еще темы с ответами:

Вывести список студентов с их оценками за разные предметы, со средним баллом студента - C++
ПОМОГИТЕ!! СРОЧНО! нужно написать список студентов с их оценками за разные предметы, со средним баллом студента! используя map и...

Поиск в массиве всех студентов с заданным номером группы. Классы С++ - C++
В общем столкнулся с проблемой: enum number_type{G1,G2}; //Группы студентов class CStudent { ... number_type number; ...

Найти футбольные команды набравшие более 20 баллов - C++
07. Помогите написать программку Создайте текстовый файл данных о чемпионате Украины по футболу. Выведите на экран названия команд ,...

Удаление элементов списка со средним баллом студента, меньше заданного числа - C++
Реализовать односвязный список для хранения данных вида: ФИО, группа, средний балл. Обеспечить выполнение операций: добавление...


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

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

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