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

Определить какой из предметов был сдан группой лучше всего

13.02.2022, 02:57. Показов 1149. Ответов 5

Студворк — интернет-сервис помощи студентам
Всем привет, зарегистрировался на форуме только что, но шерстил его наверно неделю.
ладно, перейду сразу к делу.
лабораторная по классам, поэтому нужно всё делать с помощью них
по моей лабораторной работе моя задача такова:
имена учеников не нужны, на каждый предмет вводится оценка с клавиатуры(всего кол-во оценок = 5)
название предметов:математика, физика, химия, черчение, сопромат
первоначально у меня получилось сделать код с библиотекой algorithm
но получилось найти только самую наивысшую оценку, а вывести по какому предмету эта оценка и разу не получалось.
собственоПОМОГИТЕ ВЫВЕСТИ НАЗВАНИЕ ПРЕДМЕТА С НАИВЫСШЕЙ ОЦЕНКОЙ
код который выводит наивысшую оценку:
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
#include <iostream>
#include <algorithm>
using namespace std;
 
 
struct school
{
    int match;
    int fiz;
    int cherchenie;
    int him;
    int sopromat;
};
 int a, b,c, y;
 int main()
 
 {
setlocale(0, "Russian");
 
    school ocenki;
    
        cout<<"оценки за математику=";
    cin>>ocenki.match;
        cout<<"оценки за физику=";
    cin>>ocenki.fiz;
        cout<<"оценки за черчение=";
    cin>>ocenki.cherchenie;
        cout<<"оценки за химию=";
    cin>>ocenki.him;
        cout<<"оценки за сопромат=";
    cin>>ocenki.sopromat;
    
    a=max(ocenki.match, ocenki.fiz);
    b=max(ocenki.him,ocenki.cherchenie);
    c=max(a,b);
    y=max(c,ocenki.sopromat);
    
cout<<"наивысшая оцека = "<<y;
        
            
 }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2022, 02:57
Ответы с готовыми решениями:

Выдать название предмета, который был сдан лучше всего
Обрабатывается информация о сдаче экзаменов, содержащая следующие поля данных:  ФИО ученика;  Оценка по математике; ...

Определить название предмета, который был сдан лучше всего
Имеется список студентов с информацией об итогах сессии, в котором указаны фамилия, номер группы, оценки по трем предметам. Определить...

Определить название предмета, который был сдан лучше всего
Имеется список студентов с информацией об итогах сессии, в котором указаны фамилия, номер группы, оценки по трем предметам. Определить...

5
0 / 0 / 0
Регистрация: 13.02.2022
Сообщений: 3
13.02.2022, 03:10  [ТС]
Всем привет, зарегистрировался на форуме только что, но шерстил его наверно неделю.
ладно, перейду сразу к делу.
лабораторная по классам, поэтому нужно всё делать с помощью них
по моей лабораторной работе моя задача такова: Вложение 1321373
имена учеников не нужны, на каждый предмет вводится оценка с клавиатуры(всего кол-во оценок = 5)
название предметов:математика, физика, химия, черчение, сопромат
первоначально у меня получилось сделать код с библиотекой algorithm
но получилось найти только самую наивысшую оценку, а вывести по какому предмету эта оценка и разу не получалось.
собственоПОМОГИТЕ ВЫВЕСТИ НАЗВАНИЕ ПРЕДМЕТА С НАИВЫСШЕЙ ОЦЕНКОЙ
код который выводит наивысшую оценку:
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
#include <iostream>
#include <algorithm>
using namespace std;
 
 
struct school
{
    int match;
    int fiz;
    int cherchenie;
    int him;
    int sopromat;
};
 int a, b,c, y;
 int main()
 
 {
setlocale(0, "Russian");
 
    school ocenki;
    
        cout<<"оценки за математику=";
    cin>>ocenki.match;
        cout<<"оценки за физику=";
    cin>>ocenki.fiz;
        cout<<"оценки за черчение=";
    cin>>ocenki.cherchenie;
        cout<<"оценки за химию=";
    cin>>ocenki.him;
        cout<<"оценки за сопромат=";
    cin>>ocenki.sopromat;
    
    a=max(ocenki.match, ocenki.fiz);
    b=max(ocenki.him,ocenki.cherchenie);
    c=max(a,b);
    y=max(c,ocenki.sopromat);
    
cout<<"наивысшая оцека = "<<y;
        
            
 }
0
236 / 50 / 37
Регистрация: 24.01.2022
Сообщений: 137
13.02.2022, 06:26
marchelas, вариант решения:

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
#include <iostream>
#include <algorithm>
#include <clocale>
#include <vector>
#include <string>
 
struct SchoolSubject {
    SchoolSubject(const std::string& nm, const int grd) 
        : name(nm), grade(grd) {}
 
    std::string name;
    int grade = 0;
};
 
int main() {
    setlocale(0, "RUS");
 
    std::vector<SchoolSubject> results = {
        SchoolSubject("математика", 0),
        SchoolSubject("физика", 0),
        SchoolSubject("черчение", 0),
        SchoolSubject("химия", 0),
        SchoolSubject("сопромат", 0)
    };
 
    for (size_t i = 0; i < results.size(); ++i) {
        std::cout << "Оценка по предмету ";
        std::cout << results[i].name << " = ";
        std::cin >> results[i].grade;
    }
 
    size_t i_best_grade = 0;
    for (size_t i = 0; i < results.size(); ++i) {
        if (results[i].grade > results[i_best_grade].grade) {
            i_best_grade = i;
        }
    }
 
    // первая найденная наивысшая оценка!
    std::cout << "Наивысшая оценка = " << results[i_best_grade].grade << "\n";
    std::cout << "по предмету " << results[i_best_grade].name << std::endl;
 
    return 0;
}
Пример вывода:
Code
1
2
3
4
5
6
7
Оценка по предмету математика = 4
Оценка по предмету физика = 5
Оценка по предмету черчение = 3
Оценка по предмету химия = 4
Оценка по предмету сопромат = 5
Наивысшая оценка = 5
по предмету физика
0
 Аватар для YUEN HOIFEF
252 / 185 / 47
Регистрация: 31.01.2021
Сообщений: 934
13.02.2022, 09:01
marchelas, вы пошли дурацким неперспективным путем.
Вот примерно то, что можно изобразить исходя из вашего решения:
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
#include<iostream>
#include<iomanip>
 
 
 
 
#define SUBJECTS_N sizeof(subjects) / sizeof(subjects[ 0 ])
 
 
class GIVEN_GRADE
 {
public:
 
int match, him, fiz, cherchenie, sopromat;
 
 };
 
 
 
 
 
 
 
int main()
 {
setlocale(0, "Russian");
 
GIVEN_GRADE grade;
 
 
grade.match = 1;
grade.him = 5;
grade.fiz = 2;
grade.cherchenie = 3;
grade.sopromat = 4;
 
const char *subjects[] = {
 "Математика",
 "Химия",
 "Физика",
 "Черчение",
 "Сопромат"
 };
 
 
int max_grade, founded_index;
 
max_grade = grade.match;
for( int i=1, x_grade=0; i<5; i++ )
 {
 if( i==1 ) x_grade = grade.him;
 else if( i==2 ) x_grade = grade.fiz;
 else if( i==3 ) x_grade = grade.cherchenie;
 else if( i==4 ) x_grade = grade.sopromat;
 
 if( x_grade > max_grade )
  {
  max_grade = x_grade;
  founded_index = i;
  }
 }
 
 
std::cout << "Maximum grade: " << max_grade << "\n";
std::cout << "Subject name:  " << subjects[ founded_index ] << "\n";
 
std::cin.get();
return 0;
 }
Для полного решения задачи надо действовать примерно так:
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
#include<string.h> // strlen
#include<iostream>
#include<iomanip>
 
#include <random>
 
 
std::mt19937 gen( time(0) );
std::uniform_int_distribution<> uid( 1, 5 );
 
 
 
#define SUBJECTS_N        sizeof(subject_names) / sizeof(subject_names[ 0 ])
#define MAX_SUBJECT_NAME  strlen(subject_names[ 0 ])
 
 
 
 
const char *subject_names[] = {
 "Математика",
 "Химия",
 "Физика",
 "Черчение",
 "Сопромат"
 };
 
 
 
 
class STUDENT
 {
public:
//char name[ 50 ]; // Не используется
int subject_grade[ SUBJECTS_N ];
 };
 
 
 
 
int main()
 {
setlocale(0, "Russian");
const int STUDENTS_N = 30; // количество студенто в группе
 
STUDENT journal[ STUDENTS_N ]; // журнал
 
for( int i=0; i<STUDENTS_N; i++ ) // пройдемся по журналу
 {
 for( int j=0; j<SUBJECTS_N; j++ ) // для КАЖДОГО студента оценки по КАЖДОМУ предмету
  {
  journal[ i ].subject_grade[ j ] = uid( gen ); // случайные оценки
  }
 }
 
/*
// Вывод на экран всего журнала
for( int i=0; i<STUDENTS_N; i++ )
 {
 std::cout << "Stydent ID: " << i << std::endl;
 std::cout << "His grades:\n" << std::endl;
 for( int j=0; j<SUBJECTS_N; j++ )
  {
  std::cout << std::left << std::setw(MAX_SUBJECT_NAME) << subject_names[ j ] << " " << journal[ i ].subject_grade[ j ] << std::endl;
  }
 std::cout << "----------------" << std::endl;
 }
*/
 
// Grade Point Overage
int GPA[ SUBJECTS_N ] = {0};
 
for( int i=0; i<STUDENTS_N; i++ )
 {
 for( int j=0; j<SUBJECTS_N; j++ )
  {
  GPA[ j ] += journal[ i ].subject_grade[ j ]; // посчет среднего балла
  }
 }
 
 
int index = 0;
for( int j=0; j<SUBJECTS_N; j++ )
 {
 //std::cout << std::left << std::setw(MAX_SUBJECT_NAME) << subject_names[ j ] << " " << GPA[ j ] << std::endl;
 if( GPA[ index ] < GPA[ j ] )
  {
  index = j;
  }
 }
 
 
std::cout << "========================================" << std::endl;
std::cout << "Название предмета: " << subject_names[ index ] << std::endl;
std::cout << "Средний балл:      " << GPA[ index ] << std::endl;
std::cout << "========================================" << std::endl;
 
 
 
 
 
std::cout << "Press any key..." << std::endl;
std::cin.get();
return 0;
 }
Суть в том, что надо подсчитать некий средний балл для каждого предмета всей группы.
Мудрить и усложнять я не стал и средний балл у меня -просто сумма оценок всей группы для каждого предметав отдельности. Далее думаю понятно.
0
0 / 0 / 0
Регистрация: 13.02.2022
Сообщений: 3
18.02.2022, 01:09  [ТС]
Цитата Сообщение от YUEN HOIFEF Посмотреть сообщение
marchelas, вы пошли дурацким неперспективным путем.
Вот примерно то, что можно изобразить исходя из вашего решения:
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
#include<iostream>
#include<iomanip>
 
 
 
 
#define SUBJECTS_N sizeof(subjects) / sizeof(subjects[ 0 ])
 
 
class GIVEN_GRADE
 {
public:
 
int match, him, fiz, cherchenie, sopromat;
 
 };
 
 
 
 
 
 
 
int main()
 {
setlocale(0, "Russian");
 
GIVEN_GRADE grade;
 
 
grade.match = 1;
grade.him = 5;
grade.fiz = 2;
grade.cherchenie = 3;
grade.sopromat = 4;
 
const char *subjects[] = {
 "Математика",
 "Химия",
 "Физика",
 "Черчение",
 "Сопромат"
 };
 
 
int max_grade, founded_index;
 
max_grade = grade.match;
for( int i=1, x_grade=0; i<5; i++ )
 {
 if( i==1 ) x_grade = grade.him;
 else if( i==2 ) x_grade = grade.fiz;
 else if( i==3 ) x_grade = grade.cherchenie;
 else if( i==4 ) x_grade = grade.sopromat;
 
 if( x_grade > max_grade )
  {
  max_grade = x_grade;
  founded_index = i;
  }
 }
 
 
std::cout << "Maximum grade: " << max_grade << "\n";
std::cout << "Subject name:  " << subjects[ founded_index ] << "\n";
 
std::cin.get();
return 0;
 }
Для полного решения задачи надо действовать примерно так:
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
#include<string.h> // strlen
#include<iostream>
#include<iomanip>
 
#include <random>
 
 
std::mt19937 gen( time(0) );
std::uniform_int_distribution<> uid( 1, 5 );
 
 
 
#define SUBJECTS_N        sizeof(subject_names) / sizeof(subject_names[ 0 ])
#define MAX_SUBJECT_NAME  strlen(subject_names[ 0 ])
 
 
 
 
const char *subject_names[] = {
 "Математика",
 "Химия",
 "Физика",
 "Черчение",
 "Сопромат"
 };
 
 
 
 
class STUDENT
 {
public:
//char name[ 50 ]; // Не используется
int subject_grade[ SUBJECTS_N ];
 };
 
 
 
 
int main()
 {
setlocale(0, "Russian");
const int STUDENTS_N = 30; // количество студенто в группе
 
STUDENT journal[ STUDENTS_N ]; // журнал
 
for( int i=0; i<STUDENTS_N; i++ ) // пройдемся по журналу
 {
 for( int j=0; j<SUBJECTS_N; j++ ) // для КАЖДОГО студента оценки по КАЖДОМУ предмету
  {
  journal[ i ].subject_grade[ j ] = uid( gen ); // случайные оценки
  }
 }
 
/*
// Вывод на экран всего журнала
for( int i=0; i<STUDENTS_N; i++ )
 {
 std::cout << "Stydent ID: " << i << std::endl;
 std::cout << "His grades:\n" << std::endl;
 for( int j=0; j<SUBJECTS_N; j++ )
  {
  std::cout << std::left << std::setw(MAX_SUBJECT_NAME) << subject_names[ j ] << " " << journal[ i ].subject_grade[ j ] << std::endl;
  }
 std::cout << "----------------" << std::endl;
 }
*/
 
// Grade Point Overage
int GPA[ SUBJECTS_N ] = {0};
 
for( int i=0; i<STUDENTS_N; i++ )
 {
 for( int j=0; j<SUBJECTS_N; j++ )
  {
  GPA[ j ] += journal[ i ].subject_grade[ j ]; // посчет среднего балла
  }
 }
 
 
int index = 0;
for( int j=0; j<SUBJECTS_N; j++ )
 {
 //std::cout << std::left << std::setw(MAX_SUBJECT_NAME) << subject_names[ j ] << " " << GPA[ j ] << std::endl;
 if( GPA[ index ] < GPA[ j ] )
  {
  index = j;
  }
 }
 
 
std::cout << "========================================" << std::endl;
std::cout << "Название предмета: " << subject_names[ index ] << std::endl;
std::cout << "Средний балл:      " << GPA[ index ] << std::endl;
std::cout << "========================================" << std::endl;
 
 
 
 
 
std::cout << "Press any key..." << std::endl;
std::cin.get();
return 0;
 }
Суть в том, что надо подсчитать некий средний балл для каждого предмета всей группы.
Мудрить и усложнять я не стал и средний балл у меня -просто сумма оценок всей группы для каждого предметав отдельности. Далее думаю понятно.
скажу вам так, что вы тоже немного тупанули сглупили. В теме указанно что нужно всё делать по теме "классы" и не дальше, а вашем коде намного продвинутей технологии. и там нужно только по минимальным знаниям всё делать, максимум библиотека algorithm. её я хотя бы смогу обьяснить преподавателю, а всё что написали вы никак не смогу
0
 Аватар для YUEN HOIFEF
252 / 185 / 47
Регистрация: 31.01.2021
Сообщений: 934
18.02.2022, 02:54
marchelas, так дальше классов никто и не шел
. Максимум, из. "продвинутого", в том примере,это:
C++
1
2
std::mt19937 gen( time(0) );
std::uniform_int_distribution<> uid( 1, 5 );
Из C++11(библиотека random).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2022, 02:54
Помогаю со студенческими работами здесь

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

В деканате хранится информация о зимней сессии. Найти предмет, который был сдан лучше всего
Всем доброго дня! Помогите пожалуйста доделать не сложную программу: В деканате хранится информация о зимней сессии на 1 курсе...

Известна масса каждого из 12 предметов. Определить общую массу всего набора предметов
Известна масса каждого из 12 предметов. Определить общую массу всего набора предметов.

Известна масса каждого из 12 предметов, определить общую массу всего набора предметов
известна масса каждого из 12 предметов определить общую массу всего набора предметов ?

Известна масса каждого из 12 предметов, определить общую массу всего набора предметов
Известна масса каждого из 12 предметов. Определить общую массу всего набора предметов.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru