Форум программистов, компьютерный форум CyberForum.ru

Структуры(ввод...) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Bi-2
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 17
06.05.2010, 11:55     Структуры(ввод...) #1
есть программа обрабатывающая список студентов, группы и оценки...
собственно нужно чтобы программа запрашивала сколько будет студентов....и после ввода числа(например 4) выполняла пересчет

в этом коде const int N(кол-во студ-ов)=4; собсна нужно, чтобы программа сама спросила скока студентов и при вводе считала именно столько раз сколько ВВЕЛИ......помогите плз...

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
#include <iostream>                          //Подключаем библиотеку функций ввода-вывода
#include <string>                            //Подключаем библиотеку для работы со строками
#include "main.h"                              //Подключаем заголовочный файл с описанием структуры СТУДЕНТ
 
using namespace std;
//Объявляем функции
const int N=4;  
void sortM(STUDENT S[N]);                     //Сортировка списка студентов по фамилии в алфавитном порядке
void student2(STUDENT S[N]);                  //Определение студентов хотя бы с одной двойкой             
 
 
//Главная функция
void main()
{
    
    STUDENT M[N];                             //Массив записей о студентах (N элементов)
    int i,j,;                                   //Переменные циклов
    
 
            
    cout<<"Vvedite informaciu o studentah:"<<endl;  //Вывод "Введите информацию о студентах"
    
    for (i=0; i<N; i++)                       //Цикл по всем записям
    {
        cout<<"Student "<<i+1<<":"<<endl;      //Вывод "Студент 1..N"
        cout<<"FIO: ";                         //Вывод "ФИО"
    
        cin>>M[i].FIO;                         //Ввод ФИО
        cout<<"Gruppa: ";                      //Вывод "Группа"
        
        cin>>M[i].group;                       //Ввод группы
        for (j=0; j<5; j++)                    //Цикл по пяти оценкам
        {
            cout<<"Ocenka "<<j+1<<": ";        //Вывод "Оценка 1.. 5"
        
            cin>>M[i].ocenki[j];               //Ввод j-ой оценки
        }
    }
 
 
 
 
    sortM(M);                                  //Вызов функции сортировки записей
                                               //Вывод "Упорядоченный массив записей по ФИО"
    cout<<endl<<"Uporyadochennii massiv zapisei po FIO:"<<endl;
    for (i=0; i<N; i++)                       //Цикл по всем 10 записям
                                               //Вывод "ФИО, группа, оценки"
        cout<<M[i].FIO<<"    "<<M[i].group<<"    "<<M[i].ocenki[0]<<
            "  "<<M[i].ocenki[1]<<"  "<<M[i].ocenki[2]<<"  "<<
            M[i].ocenki[3]<<"  "<<M[i].ocenki[4]<<endl;
    student2(M);                               //Вызов функции определения студентов с двойками
 
}
 
//Функция сортировки списка студентов по фамилии в алфавитном порядке
//Входной параметр S - массив записей о студентах
void sortM(STUDENT S[N])
{
    STUDENT tmp;                               //Хранит временно данные о студенте (используется в сортировке)
    bool sort = true;                          //Указывает нужно сортировать или нет
    int i;                                     //Счетчик цикла
    //Сортировка методом пузырька
    while (sort)                               //Цикл (пока нужно сортировать)
    {
        sort=false;                            //Делаем предположение, что сортировать уже не нужно
        for (i=0; i<N-1; i++)                    //Просматриваем все записи минус один
            if (strcmp(S[i].FIO,S[i+1].FIO)>0) //strcmp - функция сравнения строк, если первая больше второй 
            {
                tmp=S[i];                      //Меняем эти строки местами
                S[i]=S[i+1];
                S[i+1]=tmp;
                sort=true;                     //Считаем, что нужно дальше сортировать
            }
    }                                          //Конец цикла (пока нужно сортировать)
}
 
//Функция определения студентов хотя бы с одной двойкой
//Входной параметр S - массив записей о студентах
void student2(STUDENT S[N])
{
    STUDENT T[N];                             //Массив "двоечников"
    int i,j;                                   //Переменные циклов
    int k = 0;                                 //Количество "двоечников" (пока 0)
    for (i=0; i<N; i++)                       //Смотрим по всем записям
    {
        for (j=0; j<5; j++)                    //Смотрим все оценки студента
            if (S[i].ocenki[j]==2)             //Если нашли двойку
            {
                T[k]=S[i];                     //Добавляем запись о студенте в массив "двоечников"
                k++;                           //Увеличиваем число двоечников на 1
                break;                         //Выходим из цикла по оценкам
            }
    }
    if (k>0)                                   //Если есть студенты с двойками
    {
        cout<<endl<<"Studenti, imeuschie dvoiki:"<<endl;  //Вывод "Студенты, имеющие двойки"
    
        for (i=0; i<k; i++)                    //Выводим всех студентов с двойками
            cout<<T[i].FIO<<"    "<<T[i].group<<endl;
    }
    else                                       //Если студентов с двойками не найдено
        cout<<endl<<"Net studentov s dvoikami"<<endl;  //Вывод "Нет студентов с двойками"
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VtaMC
Просто Веталь
 Аватар для VtaMC
159 / 99 / 5
Регистрация: 11.05.2009
Сообщений: 628
06.05.2010, 13:10     Структуры(ввод...) #2
Выдели память, например:
C++
1
2
3
int N = 0;
cin >> N;
STUDENT *b = new STUDENT[N];
Bi-2
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 17
06.05.2010, 15:45  [ТС]     Структуры(ввод...) #3
Цитата Сообщение от VtaMC Посмотреть сообщение
Выдели память, например:
C++
1
2
3
int N = 0;
cin >> N;
STUDENT *b = new STUDENT[N];
чет не получается(((( что то не правильно делаю(((((

подскажите плз поэтапно как это сделать? я пока в этом полный ламер((((
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
06.05.2010, 15:47     Структуры(ввод...) #4
C++
1
2
3
4
5
6
7
8
9
10
int n = 0;
cout << "Введите количество студентов: ";
cin >> n;
 
STUDENT b = new STUDENT[n];
 
// остальной код. здесь работаешь как и с обычным массивом.
 
// в конце не забыть освободить выделенную память
delete[] b;
VtaMC
Просто Веталь
 Аватар для VtaMC
159 / 99 / 5
Регистрация: 11.05.2009
Сообщений: 628
06.05.2010, 15:58     Структуры(ввод...) #5
А что не получается, ошибки выдаёт или что?
Bi-2
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 17
06.05.2010, 16:25  [ТС]     Структуры(ввод...) #6
C++
1
2
3
4
5
6
7
8
9
10
int n = 0;
cout << "Введите количество студентов: ";
cin >> n;
 
STUDENT b = new STUDENT[n];
 
// остальной код. здесь работаешь как и с обычным массивом.
 
// в конце не забыть освободить выделенную память
delete[] b;
вставил.....ошибок-туча(((

Error 1 error C2440: 'initializing' : cannot convert from 'STUDENT *' to 'STUDENT'
Error 2 error C2057: expected constant expression 19
Error 3 error C2466: cannot allocate an array of constant size 0 19

Error 4 error C2133: 'M' : unknown size
Error 5 error C2057: expected constant expression 43
Error 6 error C2466: cannot allocate an array of constant size 0 43
Error 7 error C2057: expected constant expression 44
Error 8 error C2466: cannot allocate an array of constant size 0 44
Error 9 error C2065: 'N' : undeclared identifier 65
Error 10 error C2065: 'b' : undeclared identifier 111
Error 11 error C2541: 'delete' : cannot delete objects that are not pointers
получился код:

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
#include <iostream>                          //Подключаем библиотеку функций ввода-вывода
#include <string>                            //Подключаем библиотеку для работы со строками
#include "main.h"                              //Подключаем заголовочный файл с описанием структуры СТУДЕНТ
 
using namespace std;
//Объявляем функции 
//Главная функция
void main()
{
    int N = 0;
cout << "Введите количество студентов: ";
cin >> N;
 
STUDENT b = new STUDENT[N];
    
    STUDENT M[N];//Массив записей о студентах (N элементов)
    int i,j;                                   //Переменные циклов
    
 
    cout<<"Vvedite informaciu o studentah:"<<endl;  //Вывод "Введите информацию о студентах"
    
    for (i=0; i<N; i++)                       //Цикл по всем записям
    {
        cout<<"Student "<<i+1<<":"<<endl;      //Вывод "Студент 1..10"
        cout<<"FIO: ";                         //Вывод "ФИО"
    
        cin>>M[i].FIO;                         //Ввод ФИО
        cout<<"Gruppa: ";                      //Вывод "Группа"
        
        cin>>M[i].group;                       //Ввод группы
        for (j=0; j<5; j++)                    //Цикл по пяти оценкам
        {
            cout<<"Ocenka "<<j+1<<": ";        //Вывод "Оценка 1.. 5"
        
            cin>>M[i].ocenki[j];               //Ввод j-ой оценки
        }
    }
 
/////////////////////////////////////////////////////////////////////////
void sortM(STUDENT S[N]);                     //Сортировка списка студентов по фамилии в алфавитном порядке
void student2(STUDENT S[N]);                  //Определение студентов хотя бы с одной двойкой            
///////////////////////////////////////////////////////////////////////////
 
 
    sortM(M);                                  //Вызов функции сортировки записей
                                               //Вывод "Упорядоченный массив записей по ФИО"
    cout<<endl<<"Uporyadochennii massiv zapisei po FIO:"<<endl;
    for (i=0; i<N; i++)                       //Цикл по всем 10 записям
                                               //Вывод "ФИО, группа, оценки"
        cout<<M[i].FIO<<"    "<<M[i].group<<"    "<<M[i].ocenki[0]<<
            "  "<<M[i].ocenki[1]<<"  "<<M[i].ocenki[2]<<"  "<<
            M[i].ocenki[3]<<"  "<<M[i].ocenki[4]<<endl;
    student2(M);                               //Вызов функции определения студентов с двойками
 
}
 
 
 
 
//Функция сортировки списка студентов по фамилии в алфавитном порядке
//Входной параметр S - массив записей о студентах
void sortM(STUDENT S[N])
{
    STUDENT tmp;                               //Хранит временно данные о студенте (используется в сортировке)
    bool sort = true;                          //Указывает нужно сортировать или нет
    int i;                                     //Счетчик цикла
    //Сортировка методом пузырька
    while (sort)                               //Цикл (пока нужно сортировать)
    {
        sort=false;                            //Делаем предположение, что сортировать уже не нужно
        for (i=0; i<N-1; i++)                    //Просматриваем все записи минус один
            if (strcmp(S[i].FIO,S[i+1].FIO)>0) //strcmp - функция сравнения строк, если первая больше второй 
            {
                tmp=S[i];                      //Меняем эти строки местами
                S[i]=S[i+1];
                S[i+1]=tmp;
                sort=true;                     //Считаем, что нужно дальше сортировать
            }
    }                                          //Конец цикла (пока нужно сортировать)
}
 
//Функция определения студентов хотя бы с одной двойкой
//Входной параметр S - массив записей о студентах
void student2(STUDENT S[N])
{
    STUDENT T[N];                             //Массив "двоечников"
    int i,j;                                   //Переменные циклов
    int k = 0;                                 //Количество "двоечников" (пока 0)
    for (i=0; i<N; i++)                       //Смотрим по всем записям
    {
        for (j=0; j<5; j++)                    //Смотрим все оценки студента
            if (S[i].ocenki[j]==2)             //Если нашли двойку
            {
                T[k]=S[i];                     //Добавляем запись о студенте в массив "двоечников"
                k++;                           //Увеличиваем число двоечников на 1
                break;                         //Выходим из цикла по оценкам
            }
    }
    if (k>0)                                   //Если есть студенты с двойками
    {
        cout<<endl<<"Studenti, imeuschie dvoiki:"<<endl;  //Вывод "Студенты, имеющие двойки"
    
        for (i=0; i<k; i++)                    //Выводим всех студентов с двойками
            cout<<T[i].FIO<<"    "<<T[i].group<<endl;
    }
    else                                       //Если студентов с двойками не найдено
        cout<<endl<<"Net studentov s dvoikami"<<endl;  //Вывод "Нет студентов с двойками"
 
}
delete[] b;
напишите все что нужно сразу с моим кодом плз!(((( ГОРЮ!((((
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
06.05.2010, 16:37     Структуры(ввод...) #7
в вашем коде вы вводите данные в структуру:

Цитата Сообщение от Bi-2 Посмотреть сообщение
for (i=0; i<N; i++) //Цикл по всем записям
{
cout<<"Student "<<i+1<<":"<<endl; //Вывод "Студент 1..10"
cout<<"FIO: "; //Вывод "ФИО"
cin>>M[i].FIO; //Ввод ФИО
cout<<"Gruppa: "; //Вывод "Группа"
cin>>M[i].group; //Ввод группы
for (j=0; j<5; j++) //Цикл по пяти оценкам
{
cout<<"Ocenka "<<j+1<<": "; //Вывод "Оценка 1.. 5"
cin>>M[i].ocenki[j]; //Ввод j-ой оценки
}
}
покажите мне а где само описание структуры? Я его не нашел в коде
STUDENT *b = new STUDENT[N]; этот пример показан с учетом что у вас есть
struct STUDENT

да и если вы пишете в коде:
M[i].ocenki[j]
то нужно было создавать не массив b а массив М
STUDENT *M = new STUDENT[N];
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
06.05.2010, 16:40     Структуры(ввод...) #8
Цитата Сообщение от Bi-2 Посмотреть сообщение
Код
STUDENT b = new STUDENT[N];
STUDENT M[N];//Массив записей о студентах (N элементов)
что же вы пишите то.
STUDENT b - это уже и есть массив записей о студентах и работать надо с ним.

Цитата Сообщение от Bi-2 Посмотреть сообщение
delete[] b;
освобождать память надо не в конце файла, а по окончанию работы с ним, в конце функции main хотя бы до return'а.

напишите все что нужно сразу с моим кодом плз!(((( ГОРЮ!((((
мы даже не видим как выглядит ваша великая структура
VtaMC
Просто Веталь
 Аватар для VtaMC
159 / 99 / 5
Регистрация: 11.05.2009
Сообщений: 628
06.05.2010, 16:43     Структуры(ввод...) #9
ну вот так работает (по крайней мере компилирует):

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
#include <iostream>                          //Подключаем библиотеку функций ввода-вывода
#include <string>
 
struct STUDENT
{
    char * FIO;
    char * group;
    int ocenki[4];
};
 
int N = 0;
 
using namespace std;
//Объявляем функции
//Главная функция
void main()
{
cout << "Введите количество студентов: ";
        cin >> N;
 
        STUDENT *M = new STUDENT[N];
 
        //STUDENT M[N];//Массив записей о студентах (N элементов)
        int i,j;                                   //Переменные циклов
 
 
        cout<<"Vvedite informaciu o studentah:"<<endl;  //Вывод "Введите информацию о студентах"
 
        for (i=0; i<N; i++)                       //Цикл по всем записям
        {
                cout<<"Student "<<i+1<<":"<<endl;      //Вывод "Студент 1..10"
                cout<<"FIO: ";                         //Вывод "ФИО"
 
                cin>>M[i].FIO;                         //Ввод ФИО
                cout<<"Gruppa: ";                      //Вывод "Группа"
 
                cin>>M[i].group;                       //Ввод группы
                for (j=0; j<5; j++)                    //Цикл по пяти оценкам
                {
                        cout<<"Ocenka "<<j+1<<": ";        //Вывод "Оценка 1.. 5"
 
                        cin>>M[i].ocenki[j];               //Ввод j-ой оценки
                }
        }
 
/////////////////////////////////////////////////////////////////////////
void sortM(STUDENT *S);                     //Сортировка списка студентов по фамилии в алфавитном порядке
void student2(STUDENT *S);                  //Определение студентов хотя бы с одной двойкой
///////////////////////////////////////////////////////////////////////////
 
 
        sortM(M);                                  //Вызов функции сортировки записей
                                                   //Вывод "Упорядоченный массив записей по ФИО"
        cout<<endl<<"Uporyadochennii massiv zapisei po FIO:"<<endl;
        for (i=0; i<N; i++)                       //Цикл по всем 10 записям
                                                       //Вывод "ФИО, группа, оценки"
                cout<<M[i].FIO<<"    "<<M[i].group<<"    "<<M[i].ocenki[0]<<
                    "  "<<M[i].ocenki[1]<<"  "<<M[i].ocenki[2]<<"  "<<
                        M[i].ocenki[3]<<"  "<<M[i].ocenki[4]<<endl;
        student2(M);                               //Вызов функции определения студентов с двойками
 
}
 
 
 
 
//Функция сортировки списка студентов по фамилии в алфавитном порядке
//Входной параметр S - массив записей о студентах
void sortM(STUDENT *S)
{
        STUDENT tmp;                               //Хранит временно данные о студенте (используется в сортировке)
        bool sort = true;                          //Указывает нужно сортировать или нет
        int i;                                     //Счетчик цикла
    //Сортировка методом пузырька
        while (sort)                               //Цикл (пока нужно сортировать)
        {
                sort=false;                            //Делаем предположение, что сортировать уже не нужно
                for (i=0; i < N-1; i++)                    //Просматриваем все записи минус один
                        if (strcmp(S[i].FIO,S[i+1].FIO)>0) //strcmp - функция сравнения строк, если первая больше второй
                        {
                                tmp=S[i];                      //Меняем эти строки местами
                                S[i]=S[i+1];
                                S[i+1]=tmp;
                                sort=true;                     //Считаем, что нужно дальше сортировать
                        }
        }                                          //Конец цикла (пока нужно сортировать)
}
 
//Функция определения студентов хотя бы с одной двойкой
//Входной параметр S - массив записей о студентах
void student2(STUDENT *S)
{
        STUDENT *T = new STUDENT[N];                             //Массив "двоечников"
        int i,j;                                   //Переменные циклов
        int k = 0;                                 //Количество "двоечников" (пока 0)
        for (i=0; i<N; i++)                       //Смотрим по всем записям
        {
                for (j=0; j<5; j++)                    //Смотрим все оценки студента
                        if (S[i].ocenki[j]==2)             //Если нашли двойку
                        {
                                T[k]=S[i];                     //Добавляем запись о студенте в массив "двоечников"
                                k++;                           //Увеличиваем число двоечников на 1
                                break;                         //Выходим из цикла по оценкам
                        }
        }
        if (k>0)                                   //Если есть студенты с двойками
        {
                cout<<endl<<"Studenti, imeuschie dvoiki:"<<endl;  //Вывод "Студенты, имеющие двойки"
 
                for (i=0; i<k; i++)                    //Выводим всех студентов с двойками
                        cout<<T[i].FIO<<"    "<<T[i].group<<endl;
        }
        else                                       //Если студентов с двойками не найдено
                cout<<endl<<"Net studentov s dvoikami"<<endl;  //Вывод "Нет студентов с двойками"
 
}
Bi-2, структурой ты так и не поделился... Пришлось написать свою на основе твоего кода...
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
06.05.2010, 16:48     Структуры(ввод...) #10
и не забываем удалить динамический массив
C++
1
delete []M;
Bi-2
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 17
06.05.2010, 16:48  [ТС]     Структуры(ввод...) #11
вот моя структура

C++
1
2
3
4
5
6
7
8
9
10
//Тип STUDENT:
//Поля
//FIO - фамилия и инициалы 30 символов
//group - номер группы 8 символов
//ocenki - оценки студентов (массив из 5 элементов)
typedef struct {
    char FIO[30]; 
    char group[8]; 
    int ocenki[5];} 
STUDENT;
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
06.05.2010, 16:54     Структуры(ввод...) #12
Цитата Сообщение от Bi-2 Посмотреть сообщение
int ocenki[5];}
Массив на оценки не нужно создавать, вот ваш массив оценок:
M[i].ocenki;
нужно прописать в структуре int ocenki и в M[i].ocenki записывать все оценки
Bi-2
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 17
06.05.2010, 17:20  [ТС]     Структуры(ввод...) #13
да фиг с оценками..........
составьте код! плииииииз! не догоняю(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
06.05.2010, 17:43     Структуры(ввод...) #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
 
#include <iostream>                          //Подключаем библиотеку функций ввода-вывода
#include <string>
 using namespace std;
struct STUDENT{
        char FIO[30]; 
        char group[8]; 
        int ocenki[5];
} ;
//Функция сортировки списка студентов по фамилии в алфавитном порядке
//Входной параметр S - массив записей о студентах
void sortM(STUDENT *S, int N)
{
        STUDENT tmp;                               //Хранит временно данные о студенте (используется в сортировке)
        bool sort = true;                          //Указывает нужно сортировать или нет
        int i;                                     //Счетчик цикла
    //Сортировка методом пузырька
        while (sort)                               //Цикл (пока нужно сортировать)
        {
                sort=false;                            //Делаем предположение, что сортировать уже не нужно
                                for (i=0; i < N-1; i++)                    //Просматриваем все записи минус один
                        if (strcmp(S[i].FIO,S[i+1].FIO)>0) //strcmp - функция сравнения строк, если первая больше второй
                        {
                                tmp=S[i];                      //Меняем эти строки местами
                                S[i]=S[i+1];
                                S[i+1]=tmp;
                                sort=true;                     //Считаем, что нужно дальше сортировать
                        }
        }                                          //Конец цикла (пока нужно сортировать)
}
 
//Функция определения студентов хотя бы с одной двойкой
//Входной параметр S - массив записей о студентах
void student2(STUDENT *S,int N)
{
                STUDENT *T = new STUDENT[N];                             //Массив "двоечников"
        int i,j;                                   //Переменные циклов
        int k = 0;                                 //Количество "двоечников" (пока 0)
        for (i=0; i<N; i++)                       //Смотрим по всем записям
        {
                for (j=0; j<5; j++)                    //Смотрим все оценки студента
                        if (S[i].ocenki[j]==2)             //Если нашли двойку
                        {
                                T[k]=S[i];                     //Добавляем запись о студенте в массив "двоечников"
                                k++;                           //Увеличиваем число двоечников на 1
                                break;                         //Выходим из цикла по оценкам
                        }
        }
        if (k>0)                                   //Если есть студенты с двойками
        {
                cout<<endl<<"Studenti, imeuschie dvoiki:"<<endl;  //Вывод "Студенты, имеющие двойки"
 
                for (i=0; i<k; i++)                    //Выводим всех студентов с двойками
                        cout<<T[i].FIO<<"    "<<T[i].group<<endl;
        }
        else                                       //Если студентов с двойками не найдено
                cout<<endl<<"Net studentov s dvoikami"<<endl;  //Вывод "Нет студентов с двойками"
 delete []T;
}
 
 
//Объявляем функции
//Главная функция
void main()
{
    int N = 0;
    setlocale(LC_CTYPE,"Rus");
cout << "Введите количество студентов: ";
                cin >> N;
 
                STUDENT *S = new STUDENT[N];
 
                //STUDENT M[N];//Массив записей о студентах (N элементов)
        int i,j;                                   //Переменные циклов
 
 
        cout<<"Vvedite informaciu o studentah:"<<endl;  //Вывод "Введите информацию о студентах"
 
        for (i=0; i<N; i++)                       //Цикл по всем записям
        {
                cout<<"Student "<<i+1<<":"<<endl;      //Вывод "Студент 1..10"
                cout<<"FIO: ";                         //Вывод "ФИО"
 
                cin>>S[i].FIO;                         //Ввод ФИО
                cout<<"Gruppa: ";                      //Вывод "Группа"
 
                cin>>S[i].group;                       //Ввод группы
                for (j=0; j<5; j++)                    //Цикл по пяти оценкам
                {
                        cout<<"Ocenka "<<j+1<<": ";        //Вывод "Оценка 1.. 5"
 
                        cin>>S[i].ocenki[j];               //Ввод j-ой оценки
                }
        }
 
 
 
 
        sortM(S,N);                                  //Вызов функции сортировки записей
                                                   //Вывод "Упорядоченный массив записей по ФИО"
        cout<<endl<<"Uporyadochennii massiv zapisei po FIO:"<<endl;
        for (i=0; i<N; i++)
        {//Цикл по всем 10 записям
                                                       //Вывод "ФИО, группа, оценки"
                cout<<S[i].FIO<<"    "<<S[i].group<<"    ";
                for(int j=0;j<5;j++)
                    cout<<S[i].ocenki[j]<<"  ";
                cout<<endl;
        }
        student2(S,N);                               //Вызов функции определения студентов с двойками
        delete []S;
        
 
}
з.ы. на счет int ocenki[5]; я был не прав, вначале не понял поставленной задачи, и правда создается массив оценок на каждого студента
Bi-2
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 17
06.05.2010, 18:41  [ТС]     Структуры(ввод...) #15
Crudelis, ДАЙ ТЕБЕ БОГ ЗДОРОВЬЯ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!=))))))
СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))))))))))))))))))))))))))))))))



Добавлено через 20 минут
......только имена студентов по русски не отображаются...))))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2010, 19:29     Структуры(ввод...)
Еще ссылки по теме:

C++ [СИ] Ввод и вывод элементов структуры
Структуры. Как сделать ввод из файла?) C++
C++ Ввод в начало структуры

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

Или воспользуйтесь поиском по форуму:
Crudelis
Шаровик затейник
 Аватар для Crudelis
667 / 409 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
06.05.2010, 19:29     Структуры(ввод...) #16
для этого необходимо кое что в программе дописать
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
 
#include <iostream>                          //Подключаем библиотеку функций ввода-вывода
#include <string>
#include<windows.h>
 using namespace std;
struct STUDENT{
        char FIO[30]; 
        char group[8]; 
        int ocenki[5];
} ;
//Функция сортировки списка студентов по фамилии в алфавитном порядке
//Входной параметр S - массив записей о студентах
void sortM(STUDENT *S, int N)
{
        STUDENT tmp;                               //Хранит временно данные о студенте (используется в сортировке)
        bool sort = true;                          //Указывает нужно сортировать или нет
        int i;                                     //Счетчик цикла
    //Сортировка методом пузырька
        while (sort)                               //Цикл (пока нужно сортировать)
        {
                sort=false;                            //Делаем предположение, что сортировать уже не нужно
                                for (i=0; i < N-1; i++)                    //Просматриваем все записи минус один
                        if (strcmp(S[i].FIO,S[i+1].FIO)>0) //strcmp - функция сравнения строк, если первая больше второй
                        {
                                tmp=S[i];                      //Меняем эти строки местами
                                S[i]=S[i+1];
                                S[i+1]=tmp;
                                sort=true;                     //Считаем, что нужно дальше сортировать
                        }
        }                                          //Конец цикла (пока нужно сортировать)
}
 
//Функция определения студентов хотя бы с одной двойкой
//Входной параметр S - массив записей о студентах
void student2(STUDENT *S,int N)
{
                STUDENT *T = new STUDENT[N];                             //Массив "двоечников"
        int i,j;                                   //Переменные циклов
        int k = 0;                                 //Количество "двоечников" (пока 0)
        for (i=0; i<N; i++)                       //Смотрим по всем записям
        {
                for (j=0; j<5; j++)                    //Смотрим все оценки студента
                        if (S[i].ocenki[j]==2)             //Если нашли двойку
                        {
                                T[k]=S[i];                     //Добавляем запись о студенте в массив "двоечников"
                                k++;                           //Увеличиваем число двоечников на 1
                                break;                         //Выходим из цикла по оценкам
                        }
        }
        if (k>0)                                   //Если есть студенты с двойками
        {
                cout<<endl<<"Studenti, imeuschie dvoiki:"<<endl;  //Вывод "Студенты, имеющие двойки"
 
                for (i=0; i<k; i++)                    //Выводим всех студентов с двойками
                        cout<<T[i].FIO<<"    "<<T[i].group<<endl;
        }
        else                                       //Если студентов с двойками не найдено
                cout<<endl<<"Net studentov s dvoikami"<<endl;  //Вывод "Нет студентов с двойками"
 delete []T;
}
 
 
//Объявляем функции
//Главная функция
void main()
{
    int N = 0;
    setlocale(LC_CTYPE,"Rus");
cout << "Введите количество студентов: ";
                cin >> N;
 
                STUDENT *S = new STUDENT[N];
 
                //STUDENT M[N];//Массив записей о студентах (N элементов)
        int i,j;                                   //Переменные циклов
 
 
        cout<<"Vvedite informaciu o studentah:"<<endl;  //Вывод "Введите информацию о студентах"
 
        for (i=0; i<N; i++)                       //Цикл по всем записям
        {
                cout<<"Student "<<i+1<<":"<<endl;      //Вывод "Студент 1..10"
                cout<<"FIO: ";                         //Вывод "ФИО"
                cin.ignore(1);
                gets(S[i].FIO);                         //Ввод ФИО
                OemToCharA(S[i].FIO,S[i].FIO);
                cout<<"Gruppa: ";                      //Вывод "Группа"
                gets(S[i].group);                       //Ввод группы
                OemToCharA(S[i].group,S[i].group);
                for (j=0; j<5; j++)                    //Цикл по пяти оценкам
                {
                        cout<<"Ocenka "<<j+1<<": ";        //Вывод "Оценка 1.. 5"
 
                        cin>>S[i].ocenki[j];               //Ввод j-ой оценки
                }
        }
 
 
 
 
        sortM(S,N);                                  //Вызов функции сортировки записей
                                                   //Вывод "Упорядоченный массив записей по ФИО"
        cout<<endl<<"Uporyadochennii massiv zapisei po FIO:"<<endl;
        for (i=0; i<N; i++)
        {//Цикл по всем 10 записям
                                                       //Вывод "ФИО, группа, оценки"
                cout<<S[i].FIO<<"    "<<S[i].group<<"    ";
                for(int j=0;j<5;j++)
                    cout<<S[i].ocenki[j]<<"  ";
                cout<<endl;
        }
        student2(S,N);                               //Вызов функции определения студентов с двойками
        delete []S;
        
 
}
Добавлено через 23 секунды
плюс на всякий случай сделал группу на русск языке
Yandex
Объявления
06.05.2010, 19:29     Структуры(ввод...)
Ответ Создать тему
Опции темы

Текущее время: 15:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru