2 / 2 / 2
Регистрация: 28.02.2016
Сообщений: 158
1

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

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

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

Есть задание:
Создать структуру 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2017, 17:01
Ответы с готовыми решениями:

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

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

Нужно немного исправить код
{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...

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

1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
02.05.2017, 17:08 2
У вас главная проблема в том, что одна и та же переменная отвечает и за размер массива студентов и за количество оценок. Сделайте последнее константным, равным 5 (как указано в задании). А вот массив студентом надо либо заменить на вектор, либо сделать динамический массив
C++
1
2
3
4
5
6
7
int n;
std::cin >> n;
// выделяем память под динамический массив
Student *arr = new Student[n];
// работа с массивом как со статическим
// освобождаем память в конце программы
delete[] arr;
1
02.05.2017, 17:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
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) {...

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru