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

Работа с структурой в С++ (код есть, нужно немного доработать)

02.05.2017, 17:01. Показов 853. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.

Есть задание:
Создать структуру STUDENT, которая имеет поля:
1. NAME. ФИО.
2. GROUP - номер группы.
3. SES - оценки с 5 предметов. (Массив с 5 элементов).

Написать следующую программу, которая реализует действия разными функциями:
1. Возможность ввести с клавиатуры данные в массив STUD, который состоит из N переменных типа STUDENT.
2. Сортировка записей по возрастанию значений поля GROUP.

Что уже есть:
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
// оценок должно быть 5
// n вводить с клавиатуры
 
#include<iostream>
#include<clocale>
using namespace std;
int const n = 2;
 
int main(){
setlocale(LC_ALL, "Russian");
 
//cout << "Введите количество записей. n = ";
//cin >> n;
 
struct student{
    char fio[20];
    int number;
    float usp[n];
};
 
student N[n];
 
for(int i=0;i<n;++i){
    cout << "Введите ФИО студента  " << i << "-ого по списку: " << endl;
    cin >> N[i].fio;
    cout << "Номер группы студента " << i <<"-ого по списку: " << endl;
    if(i==0) cin >> N[i].number;
    else cin >> N[i].number;
    cout << "Введите оценки студента " << i << "-ого по списку с пяти предметов: "<< endl;
    if(i==0){
        for(int j=0;j<n;++j){
            cout << "Предмет ["<<j<<"]:";
            cin >> N[i].usp[j];
            if(N[i].usp[j]>0 && N[i].usp[j]<=5) continue;
            else {
                --j;
                cout << "Не больше 5!" << endl;
            }
        }
    } else for(int j=0;j<n;++j){
        cout << "Предмет ["<< j <<"]:";
        cin >> N[i].usp[j];
        if(N[i].usp[j]>0 && N[i].usp[j]<=5)continue;
        else {
            --j;cout<<"Не больше 5!"<<endl;
        }
    }
}
 
cout << endl;
 
cout<<"Выведение данных о студентах по возрастанию номера группы: "<<endl;
for(int i=0;i<n-1;++i){
    int imin = i;
    for(int j=i+1;j<n;++j)
    if(N[j].number<N[imin].number) imin=j;
    float temp=N[i].number; 
    N[i].number=N[imin].number;
    N[imin].number=temp;
}
 
cout << endl;
 
for(int i=0;i<n;++i){
    cout<<"ФИО студента:"<<N[i].fio<<endl;
    cout<<"Номер группы студента: "<<N[i].number<<endl;
    cout<<"Оценки студента:  "<<N[i].fio<<":"<<endl;
    for(int j=0;j<n;++j)
    cout<<"Предмет ["<<j<<"]:"<<N[i].usp[j]<<endl;
}
 
return 0;
}
Что нужно сделать:
1. Оценок должно быть 5. А в коде сколько записей - столько и оценок.
2. n должна вводиться с клавиатуры. Пока можно только через константу.
Советовали реализовать массив структур, но я не знаю как это сделать.

Помогите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2017, 17:01
Ответы с готовыми решениями:

Нужно немного доработать код
#include &lt;iostream&gt; using namespace std; int main() { int n ; cin &gt;&gt; n; int M = (n-1) + (n-2); ...

Есть код, но я немного затрудняюсь в его понимании - нужно объяснение
Вот сам код string &amp;encrypt(const string &amp;source, string &amp;dest) { string en_str1, en_str2; size_t len =...

Нужно немного исправить код
{ifstream in(&quot;1.txt&quot;); in &gt;&gt; n &gt;&gt; m; a = new int*; for (int i = 0; i &lt; n; ++i) { a = new int; for (int j = 0; j &lt; m; ++j) in...

1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
02.05.2017, 17:08
У вас главная проблема в том, что одна и та же переменная отвечает и за размер массива студентов и за количество оценок. Сделайте последнее константным, равным 5 (как указано в задании). А вот массив студентом надо либо заменить на вектор, либо сделать динамический массив
C++
1
2
3
4
5
6
7
int n;
std::cin >> n;
// выделяем память под динамический массив
Student *arr = new Student[n];
// работа с массивом как со статическим
// освобождаем память в конце программы
delete[] arr;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2017, 17:08
Помогаю со студенческими работами здесь

Нужно немного изменить код (сумма от последнего отрицательного элемента массива до первого положительного)
Народ такая проблема, мой код считает сумму от последнего отрицательного элемента массива до первого положительного. Как сделать чтобы он...

есть код и есть ошибка нужно найти дырку
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; int main(int argc, char *argv) { int i,size,n; ...

Есть код програмы, нужно подправить его немного
Вот код: uses crt; var xn,xk,x,s,dx,t,ex:real; n,i:integer; begin clrscr; xn:=0.1; xk:=1; dx:=(xk-xn)/10; n:=14;

Работа с деревьями, нужно доработать код
Пожалуйста Задание: Поменять местами максимальное и минимальное значение в дереве вот максимально и минимальное нашла поменять...

Нужно немного доработать программу
Задание: #include &lt;stdio.h&gt; #include &lt;malloc.h&gt; #include &lt;stdlib.h&gt; int** func(int **, int *, int *, int **, int, int); int...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
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