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

Структуры, определить средний бал и количество отличников

09.01.2015, 11:52. Показов 7055. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие задания:

Поля структуры:
Фамилия
Группа
Физика
Информатика
История

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

Помогите переделать код, у меня есть, но там ошибки какие-то и мне нужно с объяснением как каждая строчка работает, ну комментарий. Это задание на экзамен. Объяснить как код работает.

Код программы:
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
#include <iostream>
#include <string.h>
using namespace std;
struct Student
{
    char fname[20], group[20];
    int phcs, inform, hist;
}; 
int main()
{
    Student st[size];
    int sbal, inf5, hist5;
    for (int i = 0; i < size; i++)
    {
        cout << "Prizvushe: ";
        cin >> st[i].fname;
        cout << "Gryppa: ";
        cin >> st[i].group;
        cout << "Fizuka: ";
        cin >> st[i].phcs;
        cout << "Informatuka: ";
        cin >> st[i].inform;
        cout << "Istorija: ";
        cin >> st[i].hist;
        cout << endl << "--------------------------------" << endl;
    }
    sbal = 0;
    for (int i = 0; i < size; i++)
        sbal += st[i].phcs;
    cout << "Serednii bal: " << sbal << endl;
    inf5 = hist5 = 0;
    for (int i = 0; i < size; i++)
    {
        if (st[i].inform == 5)
            inf5++;
        if (st[i].hist == 5)
            hist5++;
    }
    cout << "5 z informatuku mae " << inf5 << " stydentov, a same\n";
    for (int i = 0; i < size; i++)
    {
        if (st[i].inform == 5)
        {
            cout << "Prizvushe: " << st[i].fname << endl;
            cout << "Gryppa: " << st[i].group << endl;
            cout << "Fizuka: " << st[i].phcs << endl;
            cout << "Informatuka: " << st[i].inform << endl;
            cout << "Istorija: " << st[i].hist << endl;
            cout << endl << "--------------------------------" << endl;
        }
    }
    cout << "5 z informatuku mae " << inf5 << " stydentov, a same\n";
    for (int i = 0; i < size; i++)
    {
        if (st[i].hist == 5)
        {
            cout << "Prizvushe: " << st[i].fname << endl;
            cout << "Gryppa: " << st[i].group << endl;
            cout << "Fizuka: " << st[i].phcs << endl;
            cout << "Informatuka: " << st[i].inform << endl;
            cout << "Istorija: " << st[i].hist << endl;
            cout << endl << "--------------------------------" << endl;
        }
    }
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2015, 11:52
Ответы с готовыми решениями:

Определить количество отличников и средний бал каждого студента
Дана запись, состоящая из ведомости 3-х студентов с их оценками (порядковый номер, Ф.И.О. и три оценки) определить количество отличников и...

Определить средний бал оценок по физике, количество студентов с оценкой 5 по информатике, математике и вывести
Поля структуры: Фамилия Группа Физика Информатика История Условие задачи: Определить средний бал оценок по физике,...

Определить количество отличников по предмету на курсе с помощью структуры данных – «стек»
Разработать функции для выполнения базовых операций над линейными структурами, содержащими записи со сведениями о студентах: ФИО, возраст,...

2
99 / 81 / 93
Регистрация: 03.12.2013
Сообщений: 217
09.01.2015, 15:26
как-то так)
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
#include <iostream>
#include <string.h>
using namespace std;
struct Student                      //структура
{
    char fname[20], group[20];      //переменныйе для фамилии и группы
    int phcs, inform, hist;         //переменные для оценок за 3 предмета
};
int main()
{
    int size;                                   //количество студентов в структуре
    cout << "Vvedite koli4estvo stydentov: ";
    cin >> size;
    Student *st = new Student[size];            //создаем массив структур,длинна которого равна количеству студентов
 
    double sbal;                                //переменная для среднего балу по физике
                                                //если оценка должна быть без дроби(тоесть 3.2 не может быть,а просто 3)
                                                //то изменить double на int
    int inf5, hist5;                            //переменные для подсчета студентов с 5-терками по предметам
    for (int i = 0; i < size; i++)              //заполняем массив структур обычным цыклом
    {
        cout << "Prizvushe: ";
        cin >> st[i].fname;
        cout << "Gryppa: ";
        cin >> st[i].group;
        cout << "Fizuka: ";
        cin >> st[i].phcs;
        cout << "Informatuka: ";
        cin >> st[i].inform;
        cout << "Istorija: ";
        cin >> st[i].hist;
        cout << endl << "--------------------------------" << endl;
    }
    sbal = 0;                                       //инициализируем 0 средний бал по физике
    for (int i = 0; i < size; i++)                  //в цыкле бере оценку по физике каждого студента и суммируем
        sbal += st[i].phcs;                         //фактически просто суммируем поле(переменную) phcs каждого елемента массива структур
    sbal = sbal / size;                             //дальше вычисляем средний бал(делим на количество студентов)
    cout << "Serednii bal: " << sbal << endl;       //вывод
    inf5 = hist5 = 0;
    /*Дальше берем тоже цыклом, и проверяем елементы(поля) из массива структур. Тоесть берем первого студента и проверяем его оцену
    если 5 - увеличиваем счетчик соответствующего предмета и переходим к слудующему,если не 5 - просто переходим к слудующему*/
    for (int i = 0; i < size; i++)
    {
        if (st[i].inform == 5)                      
            inf5++;
        if (st[i].hist == 5)
            hist5++;
    }
 
    if (inf5 == 0)              //проверка вдруг ниукого нет 5-терки с предмета
    {
        cout << "Net stydentov s ocenkoi 5 s inform.\n";
    }
    else
    {
        cout << "5 z informatuku mae " << inf5 << " stydentov, a same\n";       //выводим сколько студентов есть с 5 с информатики(считали вверху)
        for (int i = 0; i < size; i++)
        {
            if (st[i].inform == 5)      //если оценка по инф. ровна 5 - выводим студента, если неровна 5 - ничего не делаем
            {
                cout << "Prizvushe: " << st[i].fname << endl;
                cout << "Gryppa: " << st[i].group << endl;
                cout << "Fizuka: " << st[i].phcs << endl;
                cout << "Informatuka: " << st[i].inform << endl;
                cout << "Istorija: " << st[i].hist << endl;
                cout << endl << "--------------------------------" << endl;
            }
        }
    }
    //тут тоже самое что и вверху
 
    if (inf5 == 0)
    {
        cout << "Net stydentov s ocenkoi 5 s inform.\n";
    }
    else
    {
        cout << "5 z istorii mae " << hist5 << " stydentov, a same\n";
        for (int i = 0; i < size; i++)
        {
            if (st[i].hist == 5)
            {
                cout << "Prizvushe: " << st[i].fname << endl;
                cout << "Gryppa: " << st[i].group << endl;
                cout << "Fizuka: " << st[i].phcs << endl;
                cout << "Informatuka: " << st[i].inform << endl;
                cout << "Istorija: " << st[i].hist << endl;
                cout << endl << "--------------------------------" << endl;
            }
        }
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 01.01.2015
Сообщений: 11
09.01.2015, 17:38  [ТС]
Помогите с этой моей задачей:
Структуры и строчные массивы

Добавлено через 4 минуты
И пожалуйста побольше объяснений (комментариев)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2015, 17:38
Помогаю со студенческими работами здесь

Структуры: вычислить средний бал успеваемости учеников класса
Добрый день у меня такая проблема нужно выполнить задание но код не рабочий помогите исправить. Задание такое: Вычислитель средний бал...

Определить количество отличников 1-2 курса на всех факультетах группы у которых нет отличников
// Сторити масив структур, яки складаються з елементів: факультет, курс, група, призвіще студ,езаменаційна оцінка. Візначити: кількість ...

Структуры. Вывести информацию по победителю в каждой секции и найти средний бал по каждой секции
Ведомости про участников конкурса содержат следующую информацию: фамилию,имя,секцию,набранный балл.Вывести информацию по победителю в...

Посчитать средний бал группы и вывести список студентов, у которых средний балл выше среднего балла группы
Составить список студентов, в который входит 5 человек. Для каждого студента ввести фамилию, год рождения, курс, последние 6 оценок за...

Средний бал по 4 предметам
Всем привет. Помогите пожалуйста найти средний бал по предметам и если средний бал больше 7 то сохранить в файл, а то чета я вообще не...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru