Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
timmytheus
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 33
#1

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

14.04.2016, 15:01. Просмотров 485. Ответов 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]);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2016, 15:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск в массиве объектов типа Student по заданному полю (массивы, структуры) (C++):

Поиск в массиве объектов типа Student по заданному полю (массивы, структуры) - C++
Добрый день! Нужно организовать : Функцию поиска студента по фамилии и поиск его средней арифметической оценок Буду рад любой...

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

Реализовать поиск по заданному полю в массиве объектов типа Student и вывод этих данных на консоль - C++
В задаче надо определить самое часто встречаемое имя среди женщин и среди мужчин. #include &lt;iostream&gt; #include &lt;fstream&gt; #include...

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

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

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

14
eagl69
4 / 9 / 1
Регистрация: 12.10.2011
Сообщений: 498
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 / 0
Регистрация: 14.12.2015
Сообщений: 33
18.04.2016, 12:43  [ТС] #3
Такого рода ответ мне ничем не помог.
0
eagl69
4 / 9 / 1
Регистрация: 12.10.2011
Сообщений: 498
18.04.2016, 13:07 #4
Тот код надо переделывать и переделывать с пониманием того что происходит, а если что не получается спрашивайте, помогут.... а все переделывать за Вас ни кто не будет, не интересно...
0
timmytheus
0 / 0 / 0
Регистрация: 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
5532 / 4842 / 1640
Регистрация: 14.04.2014
Сообщений: 19,642
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 / 0
Регистрация: 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
4 / 9 / 1
Регистрация: 12.10.2011
Сообщений: 498
19.04.2016, 05:30 #8
Цитата Сообщение от timmytheus Посмотреть сообщение
int number;
Если я правельно понял то это объявление нужно вынести за оператор if. а вообще не понятно кто на кого и в каком случае ругается и какую ошибку выдает....
0
meJevin
156 / 148 / 58
Регистрация: 18.11.2015
Сообщений: 672
Завершенные тесты: 1
19.04.2016, 08:11 #9
Давай полностью задание, я все сделаю.
0
timmytheus
0 / 0 / 0
Регистрация: 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
4 / 9 / 1
Регистрация: 12.10.2011
Сообщений: 498
20.04.2016, 13:03 #11
Цитата Сообщение от meJevin Посмотреть сообщение
Давай полностью задание, я все сделаю.
Вам же предложили сделать?
0
timmytheus
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 33
20.04.2016, 17:48  [ТС] #12
Я бы не хотел, что бы за меня все делали. Я бы хотел, что бы мне помогли или же намекнули как закончить мою работу
0
eagl69
4 / 9 / 1
Регистрация: 12.10.2011
Сообщений: 498
20.04.2016, 17:52 #13
Цитата Сообщение от timmytheus Посмотреть сообщение
2.Тут ругается на переменную number.
Так и не написал как ругается... как мы можем помочь? И еще делай пошаговое выполнение и смотри за переменными если сам хочешь...
0
timmytheus
0 / 0 / 0
Регистрация: 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
4 / 9 / 1
Регистрация: 12.10.2011
Сообщений: 498
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
Привет! Вот еще темы с ответами:

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

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

Реализовать поиск в массиве объектов пользовательского типа по заданному полю - C++
Создать типизированный файл, элементами которого являются сведения об автомобилях: марка, вместимость, год выпуска, цвет. Вывести марку...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа - C++
ОСНОВЫ ОБРАБОТКИ СТРУКТУР С клавиатуры ввести последовательность записей, содержащих информацию о студенческие группы института...


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

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

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