Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
timmytheus
0 / 0 / 2
Регистрация: 14.12.2015
Сообщений: 33
#1

Поиск в массиве объектов типа Student по заданному полю (массивы, структуры) - C++

14.04.2016, 15:01. Просмотров 612. Ответов 14
Метки нет (Все метки)

Добрый вечер. Имею практически готовую программу. Так как не правильно понял задание, нужно немного переделать работу.

Нужно :
*Что-бы пользователь задавал сам количество предметов и сам их называл определенным названием.
*Что-бы был найден средний бал среди этих добавленных предметов.
*Что-бы пользователь нажав на [3] ( case3 ) мог ввести нового пользователя ( добавить к имеющимся )

Полное задание выглядит так :
Поля структуры: код студента, фамилия, предмет, оценка. Операция: найти средний балл студента с введенной фамилией.

Буду очень рад и признателен любой помощи! Спасибо!


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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include<iostream>
using namespace std;
 
struct Student
{
    char lastname[20];
    char group[10];
    int mark1;
    int mark2;
    int mark3;
};
void average(Student *st_arr, int size);
void enter(Student *st);
void print(Student st);
void printAll(Student *st_arr, int size);
void sort(Student *st_arr, int size);
int search(Student *st_arr, int size);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Добро пожаловать." << endl;
 
    cout << "Пожалуйста введите количество студентов, которые будут введены в текущем сеансе:";
    int number;
    cin >> number;
    cin.ignore();
 
    Student *students = new Student[number];
    for (int i = 0; i < number; i++)
    {
        enter(&students[i]);
        //enter(students + i);
    }
 
    int choise = -1;
    while (choise)
    {
        system("cls");
        cout << "Пожалуйста введите номер функции и нажмите ENTER\n" << endl;
        cout << "[1] Все студенты \n[2] Найти студента с вычесленным средним баллом\n[3] Добавить студента\n[0] Выход\n";
        cout << "Ваш выбор: ";
        cin >> choise;
        int count;
        switch (choise)
        {
        case 1: printAll(students, number); system("pause");
            cout << "Пожалуйста введите нужный номер и нажмите ENTER\n" << endl;
            break;
        case 2: count = search(students, number);
            cout <<"\n" << count << " результат(ов) поиска\n" << endl;
            system("pause");
            break;
        case 3: // указатель добавления нового студента
            break;
        case 4: average(students, number);
            system("pause"); break;
        case 0: cout << "Вы уверены, что хотите выйти из программы?\n";
            break;
        default: cout << "Вы ввели не существующий номер в данном меню. Нажмите ENTER, что-бы повторить попытку" << endl;
            system("pause");
        }
    }
    system("PAUSE");
    return 0;
}
int search(Student *st_arr, int size)
{
    cout << "Поиск студента по Фамилии:" << endl;
    cout << "----------------------------------------------" << endl;
    cout << "Введите Фамилию студента:";
    char name[25]; cin >> name;
 
    int count = 0;
    for (int i = 0; i < size; i++)
        if (strcmp(st_arr[i].lastname, name) == 0)
        {
            print(st_arr[i]);
            count++;
        }
 
    return count;
}
 
void sort(Student *st_arr, int size)
{
    for (int i = 0; i < size - 1; i++)
        for (int j = size - 1; j > i; j--)
            if (strcmp(st_arr[j].lastname, st_arr[j - 1].lastname)<0)
            {
                Student tmp = st_arr[j];
                st_arr[j] = st_arr[j - 1];
                st_arr[j - 1] = tmp;
 
            }
}
void average(Student * st_arr, int size)
{
 
}
void enter(Student *st) // Добавляем студента
{
    cout << "Введите фамилию студента:";
    cin.getline(st->lastname, 25);
    cout << "Введите студенчиский код: ";
    cin >> st->group;
    cout << "Оценка по Математике:";
    cin >> st->mark1;
    cout << "Оценка по Английскому:";
    cin >> st->mark2;
    cout << "Оценка по Программированию:";
    cin >> st->mark3;
    cout << "----------------------------------------------" << endl;
    cin.ignore();
 
}
 
void print(Student st) // Вывод студентов
{
    cout << "Студенческий код: " << st.group << endl;
    cout << "Фамилия студента: " << st.lastname << endl;
    
    cout << "Оценки по предметам: " << endl;
 
    cout << "Оценка по Математике:" << st.mark1 << endl;
 
    cout << "Оценка по Английскому:" << st.mark2 << endl;
 
    cout << "Оценка по Программированию:" << st.mark3 << endl;
    cout << "----------------------------------------------" << endl;
 
    int average = (st.mark1 + st.mark2 + st.mark3) / 3;
    cout << "Средняя оценка студента с ст. кодом " << st.group << ": " << average << endl;
 
 
}
 
void printAll(Student *st_arr, int size)
{
    cout << "\n\n----------Все студенты:----------\n\n";
    for (int i = 0; i < size; i++)
        print(st_arr[i]);
}

http://www.cyberforum.ru/cpp-beginners/thread1725811.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2016, 15:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск в массиве объектов типа Student по заданному полю (массивы, структуры) (C++):

Реализовать поиск по заданному полю в массиве объектов пользовательского типа (структура Student)
Описать переменную студент, содержащию имя, фамилию, отчество, название...

Реализовать поиск по заданному полю в массиве объектов типа Student и вывод этих данных на консоль
В задаче надо определить самое часто встречаемое имя среди женщин и среди...

Реализовать поиск по заданному полю в массиве объектов ползовательского типа (структуры)
Здравствуйте, помогите разобраться как решать данную задачу, заранее спасибо!...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа (структуры)
Добрый вечер! Помогите решить данную задачу, сколько ни пытался, ни в инете, ни...

Реализовать поиск в массиве объектов пользовательского типа по заданному полю (структуры)
1) В столовой предлагается N комплексных обедов, состоящих из Q блюд. ...

14
eagl69
5 / 10 / 7
Регистрация: 12.10.2011
Сообщений: 505
15.04.2016, 06:46 #2
Цитата Сообщение от timmytheus Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
struct Student
{
    char lastname[20];
    char group[10];
    int mark1;
    int mark2;
    int mark3;
};
Цитата Сообщение от timmytheus Посмотреть сообщение
Полное задание выглядит так :
Поля структуры: код студента, фамилия, предмет, оценка.
Начнем с того что твоя структура имеет другие поля.... составляй структуру правильно.... приведенная структура имеет 5 элементов а в задании перечисленно 4...
0
timmytheus
0 / 0 / 2
Регистрация: 14.12.2015
Сообщений: 33
18.04.2016, 12:43  [ТС] #3
Такого рода ответ мне ничем не помог.
0
eagl69
5 / 10 / 7
Регистрация: 12.10.2011
Сообщений: 505
18.04.2016, 13:07 #4
Тот код надо переделывать и переделывать с пониманием того что происходит, а если что не получается спрашивайте, помогут.... а все переделывать за Вас ни кто не будет, не интересно...
0
timmytheus
0 / 0 / 2
Регистрация: 14.12.2015
Сообщений: 33
18.04.2016, 15:47  [ТС] #5
Добавлено через 19 минут
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include<iostream>
#include <stdio.h>                      
#include <string.h>
#define DIM 10
#define SLEN 70
#define SUB 3
using namespace std;
 
struct Student
{
    char lastname[20];
    int code;
    char subject[SUB][SLEN];
    int mark[SUB];
 
};
 
struct Student mas[30];
struct Student tmp;
int sch = 0;
int er;
 
void enter_new();
int menu();
void out();
void del();
 
int main() // Меню case
{
    setlocale(LC_ALL, "Russian");
    while (1)
    {
        switch (menu())
        {
        case 1:out(); break;
        case 2:enter_new(); break;
        case 3:del(); break;
        case 4: break;
        case 0: return 0;
        default: cout << "Не верный выбор/n";
        }
    }
}
        
void enter_new()// Структура ввода нового студента
{
        if (sch<30)
        {
            cout << "Номер записи: " << sch + 1; 
            cout << "\nФамилия студента:";
            cin >> mas[sch].lastname;
            cout << "Код студента: ";
            cin >> mas[sch].code;
            cout << "Оценки по предметам\n";
            cout << "--------------------\n";
 
            for (int j = 0; j<SUB; j++)
            {
                cout << "Предмет: ";
                cin >> mas[sch].subject[j];
                cout << "Оценка: ";
                cin >> mas[sch].mark[j];
                cin.sync();
            }
            cout << "------------------------------" << endl;
            cout << "Студент успешно введен в базу данных" << endl;
            sch++;
        }
        else cout << "Введено максимальное кол-во записей";
    }
 
 
    int menu() // Главное меню действий
    {
        int er;
        cout << "Меню:\n";
        cout << "[1] Все студенты\n";
        cout << "[2] Добавить студента\n";
        cout << "[3] Удалить студента\n";
        cout << "[4] Поиск студента \n";
        cout << "[0] Выход\n";
        cin >> er;
        return er;
    }
 
    void out() // Структура вывода Студентов
    {
 
        int sw;   
        int k;
        int size;
        if (sch == 0) 
            cout << "\nВ данный момент в структуре нет ниодной записи.\n";
        else
        {
            cout << "\nВведите: \n";
            cout << "[1] Что-бы найти студента по Фамилии\n";
            cout << "[2] Что-бы вывести всех cтудентов\n";
            cin >> sw;
            if (sw == 1)
            {
                // Функция поиска студента по фамилии
 
            }
 
            if (sw == 2)
            {
                for (int i = 0; i < sch; i++) //выводим в цикле все записи
                {
                    if (mas[i].code == 1)
                        cout << "." << endl;
                    else
                        cout << "Все студенты: " << endl;
                    cout << "------------------------------" << endl;
                    cout << "Фамилия: " << mas[i].lastname << endl;//выводим на экран значение name i-ой структуры из массива структур mas
                    cout << "Ст. код: " << mas[i].code << endl;
                    for (int j = 0; j<SUB; j++)
                    {
                        cout << "Предмет: " << mas[i].subject[j] << "\n";
                        cout << "Оценка: " << mas[i].mark[j] << "\n";
                    }
                }
            }
        }
    }
 
        void del()        //ф-ция удаления записи
        {
            int d;        //номер записи, которую нужно удалить
            cout << "\nВведите код студента, которого необходимо удалить\n";
            cout << "Если необходимо удалить все записи,введите '99'\n";
            cin >> d;
            if (d != 99)
            { // !!!!! НУЖНО УДАЛЕНИЕ ПО СТ. КОДУ !!!!!
                for (int i = (d - 1); i<sch; i++) //цикл для удаления заданной записи, начинаем цикл с удаляемой записи
                    mas[i] = mas[i + 1]; //замещаем текущую запись следующей за ней
                sch = sch - 1; //уменяьшаем счетчик полных записей на 1
                cout << "Студент был успешно удален!" << endl;
            }
            if (d == 99)
            {
                for (int i = 0; i<30; i++)//цикл по все записям от первой до 30-ой
                    mas[i] = tmp; //замещаем каждую структуру в массиве пустой структурой
                sch = 0; //счетчик структур обнуляем, т.к. все записи удалены
                cout << "Все студенты были успешно удалены!" << endl;
 
            }
        }
Послушался вашего совета - сделал 4 структуры. Столкнулся с проблемой. Не подскажите - как дать пользователю возможность самостоятельно выбрать количество предметов? Или же вводить предметы и оценки до тех пор, пока пользователь не введет - например 0.

Большое спасибо за ваше внимание!
0
nmcf
6237 / 5549 / 2524
Регистрация: 14.04.2014
Сообщений: 23,337
18.04.2016, 15:56 #6
По заданию должно быть так:
C++
1
2
3
4
5
6
7
struct Student
{
    int code;
    char lastname[20];
    char subject[SLEN];
    int mark;
};
Про три предмета на каждого студента ничего не сказано.
Предмет вводишь так же, как и фамилию.
0
timmytheus
0 / 0 / 2
Регистрация: 14.12.2015
Сообщений: 33
18.04.2016, 16:12  [ТС] #7
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include<iostream>
#include <stdio.h>                      
#include <string.h>
 
 
 
using namespace std;
 
struct Student
{
    char lastname[20];
    int code;
    char subject;
    int mark;
 
};
 
struct Student mas[30];
struct Student tmp;
int sch = 0;
int er;
 
void enter_new();
int menu();
void out();
void del();
 
int main() // Меню case
{
    setlocale(LC_ALL, "Russian");
    while (1)
    {
        switch (menu())
        {
        case 1:out(); break;
        case 2:enter_new(); break;
        case 3:del(); break;
        case 4: break;
        case 0: return 0;
        default: cout << "Не верный выбор/n";
        }
    }
}
        
void enter_new()// Структура ввода нового студента
{
        if (sch<30)
        {
            cout << "Номер записи: " << sch + 1; 
            cout << "\nФамилия студента:";
            cin >> mas[sch].lastname;
            cout << "Код студента: ";
            cin >> mas[sch].code;
            cout << "Оценки по предметам\n";
            cout << "--------------------\n";
            cout << "Количество предметов : ";
            int number;
            cin >> number;
            cin.ignore();
 
            Student *students = new Student[number];
            for (int i = 0; i < number; i++)
            {
                cout << "Предмет: ";
                cin >> mas[sch].subject[i];
                cout << "Оценка: ";
                cin >> mas[sch].mark[i];
                cout << "--------------------\n";
                cin.sync();
            }
            cout << "------------------------------" << endl;
            cout << "Студент успешно введен в базу данных" << endl;
            sch++;
        }
        else cout << "Введено максимальное кол-во записей";
    }
 
 
    int menu() // Главное меню действий
    {
        int er;
        cout << "Меню:\n";
        cout << "[1] Все студенты\n";
        cout << "[2] Добавить студента\n";
        cout << "[3] Удалить студента\n";
        cout << "[4] Поиск студента \n";
        cout << "[0] Выход\n";
        cin >> er;
        return er;
    }
 
    void out() // Структура вывода Студентов
    {
 
        int sw;   
        int k;
        int size;
        if (sch == 0) 
            cout << "\nВ данный момент в структуре нет ниодной записи.\n";
        else
        {
            cout << "\nВведите: \n";
            cout << "[1] Что-бы найти студента по Фамилии\n";
            cout << "[2] Что-бы вывести всех cтудентов\n";
            cin >> sw;
            if (sw == 1)
            {
                // Функция поиска студента по фамилии
 
            }
 
            if (sw == 2)
            {
                for (int i = 0; i < sch; i++) //выводим в цикле все записи
                {
                    if (mas[i].code == 1)
                        cout << "." << endl;
                    else
                        cout << "Все студенты: " << endl;
                    cout << "------------------------------" << endl;
                    cout << "Фамилия: " << mas[i].lastname << endl;//выводим на экран значение name i-ой структуры из массива структур mas
                    cout << "Ст. код: " << mas[i].code << endl;
                    cout << "--------------------\n";
                    for (int j = 0; j<SUB; j++) // в данном случаи если поставить   for (int i = 0; i < number; i++) - ругается на number, не может его найти
                    {
                        cout << "Предмет: " << mas[i].subject[j] << "\n";
                        cout << "Оценка: " << mas[i].mark[j] << "\n";
                        cout << "--------------------\n";
                    }
                }
            }
        }
    }
 
        void del()        //ф-ция удаления записи
        {
            int d;        //номер записи, которую нужно удалить
            cout << "\nВведите код студента, которого необходимо удалить\n";
            cout << "Если необходимо удалить все записи,введите '99'\n";
            cin >> d;
            if (d != 99)
            { // !!!!! НУЖНО УДАЛЕНИЕ ПО СТ. КОДУ !!!!!
                for (int i = (d - 1); i<sch; i++) //цикл для удаления заданной записи, начинаем цикл с удаляемой записи
                    mas[i] = mas[i + 1]; //замещаем текущую запись следующей за ней
                sch = sch - 1; //уменяьшаем счетчик полных записей на 1
                cout << "Студент был успешно удален!" << endl;
            }
            if (d == 99)
            {
                for (int i = 0; i<30; i++)//цикл по все записям от первой до 30-ой
                    mas[i] = tmp; //замещаем каждую структуру в массиве пустой структурой
                sch = 0; //счетчик структур обнуляем, т.к. все записи удалены
                cout << "Все студенты были успешно удалены!" << endl;
 
            }
        }
C++
1
2
3
4
5
6
    for (int j = 0; j<SUB; j++) // в данном случаи если поставить   for (int i = 0; i < number; i++) - ругается на number, не может его найти
                    {
                        cout << "Предмет: " << mas[i].subject[j] << "\n";
                        cout << "Оценка: " << mas[i].mark[j] << "\n";
                        cout << "--------------------\n";
                    }
Сделано. В данной случаи проблема следующая. На вводе организовал функцию, которая спрашивает и вводит количество оценок и предметов, но в выводе этого сделать не получается. Программа ругается на number. Я понимаю, что массив нужно переставить, но куда?
0
eagl69
5 / 10 / 7
Регистрация: 12.10.2011
Сообщений: 505
19.04.2016, 05:30 #8
Цитата Сообщение от timmytheus Посмотреть сообщение
int number;
Если я правельно понял то это объявление нужно вынести за оператор if. а вообще не понятно кто на кого и в каком случае ругается и какую ошибку выдает....
0
meJevin
156 / 148 / 92
Регистрация: 18.11.2015
Сообщений: 674
Завершенные тесты: 1
19.04.2016, 08:11 #9
Давай полностью задание, я все сделаю.
0
timmytheus
0 / 0 / 2
Регистрация: 14.12.2015
Сообщений: 33
20.04.2016, 12:52  [ТС] #10
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include<iostream>
#include <stdio.h>                      
#include <string.h>
#define DIM 10
#define SLEN 70
#define SUB 3
using namespace std;
 
struct Student
{
    char lastname[20];
    int code;
    char subject[SUB][SLEN];
    int mark[SUB];
 
};
 
struct Student mas[30];
struct Student tmp;
int sch = 0;
int er;
 
void enter_new();
int menu();
void out();
void del();
 
int main() // Меню case
{
    setlocale(LC_ALL, "Russian");
    while (1)
    {
        switch (menu())
        {
        case 1:out(); break;
        case 2:enter_new(); break;
        case 3:del(); break;
        case 4: break;
        case 0: return 0;
        default: cout << "Не верный выбор/n";
        }
    }
}
        
void enter_new()// Структура ввода нового студента
{
        if (sch<30)
        {
            cout << "Номер записи: " << sch + 1; 
            cout << "\nФамилия студента:";
            cin >> mas[sch].lastname;
            cout << "Код студента: ";
            cin >> mas[sch].code;
            cout << "Оценки по предметам\n";
            cout << "--------------------\n";
            cout << "Количество предметов : ";
            int number;
            cin >> number;
            cin.ignore();
 
            Student *students = new Student[number];
            for (int i = 0; i < number; i++)
            {
                cout << "Предмет: ";
                cin >> mas[sch].subject[i];
                cout << "Оценка: ";
                cin >> mas[sch].mark[i];
                cout << "--------------------\n";
                cin.sync();
            }
            cout << "------------------------------" << endl;
            cout << "Студент успешно введен в базу данных" << endl;
            sch++;
        }
        else cout << "Введено максимальное кол-во записей";
    }
 
 
    int menu() // Главное меню действий
    {
        int er;
        cout << "Меню:\n";
        cout << "[1] Все студенты\n";
        cout << "[2] Добавить студента\n";
        cout << "[3] Удалить студента\n";
        cout << "[4] Поиск студента \n";
        cout << "[0] Выход\n";
        cin >> er;
        return er;
    }
 
    void out() // Структура вывода Студентов
    {
 
        int sw;   
        int k;
        int size;
        if (sch == 0) 
            cout << "\nВ данный момент в структуре нет ниодной записи.\n";
        else
        {
            cout << "\nВведите: \n";
            cout << "[1] Что-бы найти студента по Фамилии\n";
            cout << "[2] Что-бы вывести всех cтудентов\n";
            cin >> sw;
            if (sw == 1)
            {
                // Функция поиска студента по фамилии
 
            }
 
            if (sw == 2)
            {
                for (int i = 0; i < sch; i++) //выводим в цикле все записи
                {
                    if (mas[i].code == 1)
                        cout << "." << endl;
                    else
                        cout << "Все студенты: " << endl;
                    cout << "------------------------------" << endl;
                    cout << "Фамилия: " << mas[i].lastname << endl;
                    cout << "Ст. код: " << mas[i].code << endl;
                    cout << "--------------------\n";
                    for (int j = 0; j<SUB; j++) // в данном случаи если поставить   for (int i = 0; i < number; i++) - ругается на number, 
                    {
                        cout << "Предмет: " << mas[i].subject[j] << "\n";
                        cout << "Оценка: " << mas[i].mark[j] << "\n";
                        cout << "--------------------\n";
                    }
                }
            }
        }
    }
 
        void del()        //ф-ция удаления записи
        {
            int d;        
            cout << "\nВведите код студента, которого необходимо удалить\n";
            cout << "Если необходимо удалить все записи,введите '99'\n";
            cin >> d;
            if (d != 99)
            { // !!!!! НУЖНО УДАЛЕНИЕ ПО СТ. КОДУ !!!!!
                for (int i = (d - 1); i<sch; i++)
                    mas[i] = mas[i + 1]; 
                sch = sch - 1; 
                cout << "Студент был успешно удален!" << endl;
            }
            if (d == 99)
            {
                for (int i = 0; i<30; i++)
                    mas[i] = tmp; 
                sch = 0; 
                cout << "Все студенты были успешно удалены!" << endl;
 
            }
        }
Вот мой код программы.

Нужно:
1.Удаление студента по его ст.кода или же по фамилии.
2.Тут ругается на переменную number.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    if (sw == 2)
            {
                for (int i = 0; i < sch; i++) //выводим в цикле все записи
                {
                    if (mas[i].code == 1)
                        cout << "." << endl;
                    else
                        cout << "Все студенты: " << endl;
                    cout << "------------------------------" << endl;
                    cout << "Фамилия: " << mas[i].lastname << endl;
                    cout << "Ст. код: " << mas[i].code << endl;
                    cout << "--------------------\n";
                    for (int i = 0; i < number; i++) // в данном случаи если поставить  for (int i = 0; i < number; i++) - ругается на number.
                    {
                        cout << "Предмет: " << mas[i].subject[j] << "\n";
                        cout << "Оценка: " << mas[i].mark[j] << "\n";
                        cout << "--------------------\n";
                    }
                }
            }

3. Так-же, где поиск по Фамилии нужно найти студента по фамилии и вычислить его средний балл по всем оценкам.

Спасибо! Буду рад любой помощи!
0
eagl69
5 / 10 / 7
Регистрация: 12.10.2011
Сообщений: 505
20.04.2016, 13:03 #11
Цитата Сообщение от meJevin Посмотреть сообщение
Давай полностью задание, я все сделаю.
Вам же предложили сделать?
0
timmytheus
0 / 0 / 2
Регистрация: 14.12.2015
Сообщений: 33
20.04.2016, 17:48  [ТС] #12
Я бы не хотел, что бы за меня все делали. Я бы хотел, что бы мне помогли или же намекнули как закончить мою работу
0
eagl69
5 / 10 / 7
Регистрация: 12.10.2011
Сообщений: 505
20.04.2016, 17:52 #13
Цитата Сообщение от timmytheus Посмотреть сообщение
2.Тут ругается на переменную number.
Так и не написал как ругается... как мы можем помочь? И еще делай пошаговое выполнение и смотри за переменными если сам хочешь...
0
timmytheus
0 / 0 / 2
Регистрация: 14.12.2015
Сообщений: 33
21.04.2016, 00:49  [ТС] #14
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#include<iostream>
#include <stdio.h>                      
#include <string.h>
#define DIM 10
#define SLEN 70
#define SUB 3
using namespace std;
 
struct Student
{
    char lastname[20];
    int code;
    char subject[SUB][SLEN];
    int mark[SUB];
    
 
};
 
struct Student mas[30];
struct Student tmp;
int sch = 0;
int er;
 
 
 
void enter_new();
int menu();
void out();
void del();
 
int main() // Меню case
{
    setlocale(LC_ALL, "Russian");
    while (1)
    {
        system("cls");
        switch (menu())
        {
        case 1:out(); system("pause"); break;
        case 2:enter_new(); system("pause"); break;
        case 3:del(); system("pause"); break;
        case 4: system("pause"); break;
        case 0:  return 0;
        default: cout << "Не верный выбор/n";
        
        }
    }
 
}
        
void enter_new()// Структура ввода нового студента
{
        if (sch<30)
        {
            cout << "Номер записи: " << sch + 1; 
            cout << "\nФамилия студента:";
            cin >> mas[sch].lastname;
            cout << "Код студента: ";
            cin >> mas[sch].code;
            cout << "Оценки по предметам\n";
            cout << "--------------------\n";
            cout << "Количество предметов : ";
            int number;
            cin >> number;
            cin.ignore();
 
            Student *students = new Student[number];
            
            
            for (int i = 0; i < number; i++)
            {
                cout << "Предмет: ";
                cin >> mas[sch].subject[i];
                cout << "Оценка: ";
                cin >> mas[sch].mark[i];
                cout << "--------------------\n";
                cin.sync();
            }
            cout << "------------------------------" << endl;
            cout << "Студент успешно введен в базу данных" << endl;
            sch++;
        }
        else cout << "Введено максимальное кол-во записей";
    }
 
 
    int menu() // Главное меню действий
    {
        int er;
        cout << "Главное меню:\n";
        cout << "[1] Все студенты\n";
        cout << "[2] Добавить студента\n";
        cout << "[3] Удалить студента\n";
        cout << "[4] Поиск студента \n";
        cout << "[0] Выход\n" << endl;
 
        cout << "Ваш выбор: ";  cin >> er;
        return er;
    }
 
    void out() // Структура вывода Студентов
    {
 
        int sw;   
        int k;
        int size;
        if (sch == 0)
            cout << "\nВ данный момент в структуре нет ниодной записи.\n" << endl;
        else
        {
            cout << "\nВведите: \n";
            cout << "[1] Что-бы найти студента по Фамилии\n";
            cout << "[2] Что-бы вывести всех cтудентов\n";
            cin >> sw;
            if (sw == 1)
            {
                // Функция поиска студента по фамилии
 
            }
 
            if (sw == 2)
            {
                for (int i = 0; i < sch; i++) //выводим в цикле все записи
                {
                    if (mas[i].code == 1)
                        cout << "." << endl;
                    else
                        cout << "Все студенты: " << endl;
                    cout << "------------------------------" << endl;
                    cout << "Фамилия: " << mas[i].lastname << endl;
                    cout << "Ст. код: " << mas[i].code << endl;
                    cout << "--------------------\n";
                    for (int i = 0; i < number; i++) // в данном случаи если поставить  for (int i = 0; i < number; i++) - ругается на number.
                    {
                        cout << "Предмет: " << mas[i].subject[i] << "\n";
                        cout << "Оценка: " << mas[i].mark[i] << "\n";
                        cout << "--------------------\n";
                        
                    }
                }
            }
        }
        
    }
 
        void del()        //ф-ция удаления записи
        {
            int d;        
            cout << "\nВведите код студента, которого необходимо удалить\n";
            cout << "Если необходимо удалить все записи,введите '99'\n";
            cin >> d;
            if (d != 99)
            { // !!!!! НУЖНО УДАЛЕНИЕ ПО СТ. КОДУ !!!!!
                for (int i = (d - 1); i<sch; i++)
                    mas[i] = mas[i + 1]; 
                sch = sch - 1; 
                cout << "Студент был успешно удален!" << endl;
            }
            if (d == 99)
            {
                for (int i = 0; i<30; i++)
                    mas[i] = tmp; 
                sch = 0; 
                cout << "Все студенты были успешно удалены!" << endl;
 
            }
        }
Ошибка по поводу number - идентификатор number не определен
0
eagl69
5 / 10 / 7
Регистрация: 12.10.2011
Сообщений: 505
21.04.2016, 05:28 #15
Цитата Сообщение от eagl69 Посмотреть сообщение
Если я правильно понял то это объявление нужно вынести за оператор if. а вообще не понятно кто на кого и в каком случае ругается и какую ошибку выдает....
Не читаешь форум, я писал раньше....
А также попробуй его определить раз не определен... int number = 0; например...
0
21.04.2016, 05:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2016, 05:28
Привет! Вот еще темы с решениями:

Реализовать поиск по заданному полю в массиве объектов ползовательского типа (структуры)
Задача: Используя функции и режим меню, создать файл из 10 структур,...

Поиск в массиве объектов типа "Student" по заданному полю (файловый ввод/вывод)
Помогите написать программу 1. Файл содержит итоги контрольного срока, каждая...

Поиск в массиве объектов типа "Student" по заданному полю (файловый ввод/вывод)
Здравствуйте. Стоит такая задача: Создать структуру «студент» со следующими...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа
Все сделал, в своей задачи, осталось только вот это, помогите. Вывод на экран...


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

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

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