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

Структыру.Ошибка в сортировке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево http://www.cyberforum.ru/cpp-beginners/thread1053270.html
Проверьте пожалуйста, правильное ли решение. Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево (все биты кроме старшего сдвигаются на 1 разряд влево, а старший бит ставится на освободившееся место в младшем разряде). Вот что получилось: #include<iostream> using namespace std; int main() { int x,x1,x2,x3; cout<<"Vvedite 4islo:"; cin>>x;
C++ ПОМОГИТЕ СОСТАВИТЬ БЛОК СХЕМУ #include <iostream> #include <clocale> #include <cmath> using namespace std; int main() { intmaxkol = 0, i, j, n; int P, sum = 0; int* a; cout<< "vvedite kol-vo chisel v massive" << endl; cin>> n; http://www.cyberforum.ru/cpp-beginners/thread1053266.html
C++ Найти координаты максимальных элементов матрицы А [3][4]
#include <iostream.h> #include <math.h> void main () { int i, j, maxb, A; cout<<"vvedite matricy"<<endl; for (i=0; i<=2; i++) for (j=0; j<=3; j++) cin>>A; for (i=0; i<=2; i++) for (j=0; j<=3; j++)
Определить, является ли целое число простым C++
Целое число называется простым, если оно делится только на 1 и самого себя. Напишите программу, определяющую, является ли введенное с клавиатуры целое число простым.
C++ Пояснить код sort(p.begin(), p.end(); http://www.cyberforum.ru/cpp-beginners/thread1053230.html
встретил вот такую строку в коде sort(p.begin(), p.end()); может кто может объяснить как это работает
C++ Последовательность чисел Фибоначчи Последовательность чисел Фибоначчи характеризуется тем, что она начинается с 0, 1, и каждый последующий элемент является суммой двух предыдущих (0, 1, 1, 3, 5, 8, 13, 21, ...). Напишите программу, выводящую на экран заданное количество N чисел Фибоначчи, где N задается с клавиатуры. Напишите пожалуйста!!! подробнее

Показать сообщение отдельно
ЕвгенийГусев
1 / 1 / 0
Регистрация: 17.01.2013
Сообщений: 47
23.12.2013, 14:36     Структыру.Ошибка в сортировке
1.Описать структуру с именем STUDENT, содержащую следующие поля:
• NAME – фамилия и инициалы;
• GROUP – номер группы;
• SES - успеваемость (массив из пяти элементов).
2. Написать программу, выполняющую следующие действия :
• ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию содержимого поля GROUP;
• вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0;
• если таких нет, вывести соответствующее сообщение.

После сортировки групп по возрастанию номера групп каджого студента не совпадают с тем что заполняется в начала...Т.е я пишу допустим фамилию Иванов а номер группы 5, а потом напишу еще студента у которого будет номер 1 получается что у Иванова будет 1ый номер
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
#include <iostream.h>
#define IND 10        // ДЛЯ КОЛ- ВА СТРУКТУР 
#define SIND 5         // ДЛЯ КОЛ- ВА ОЦЕНОК 
// ОПРЕДЕЛЕНИЕ СТРУКТУРЫ STUDENT
struct Student
{
        char family[IND];
        int numgroup;
        int eval[SIND];
};
// ВВОД ДАННЫХ О СТУДЕНТАХ
void input(Student &stud,int ind);
// ВЫЧИСЛЕНИЕ СРЕДНЕГО БАЛЛА ИЗ ПЯТИ ОЦЕНОК 
float mid_eval(Student &stud);
 
    int main()
{
Student stud[10];//   МАССИВ ИЗ ДЕСЯТИ СТРУКТУР
 
        int count_loop = 0;// МЕТКА ЕСЛИ СРЕДНИЙ БАЛЛ ХОТЬ У ОДНОГО СТУДЕНТА > 4.0 
 
        float mideval[IND];  //   МАССИВ ДЛЯ СРЕДНЕГО БАЛЛА КАЖД.СТУДЕНТА
 
for(int i = 0;i < IND;i++)
    {
        // ВВОД  ДАННЫХ
        input( stud[i],i);
        // СРАЗУ  ВЫЧИСЛЯЕМ СРЕДНИЙ БАЛ  И ЗАНОСИМ В МАССИВ 
        mideval[i] = mid_eval(stud[i]);
        // ЕСЛИ ЕСТЬ  БАЛ > 4.0  ПЛЮСУЕМ МЕТКУ 
if(mideval[i] > 4.0) count_loop += 1;
    }
 
//           SORTIROVKA GRUP
        //
 
          cout << endl << "Sortirovka grup" << endl;
// СОРТИРУЕМ ГРУППЫ ПО НОМЕРУ  
     
for(int i = 0; i < IND; ++i)
    {
 
        int tmp = 0;
        int pos = i;
        tmp = stud[i].numgroup;
for(int j = i + 1; j < IND; ++j)
        {
if (stud[j].numgroup < tmp)
           {
               pos = j;
               tmp = stud[j].numgroup;
           }
        }
        stud[pos].numgroup = stud[i].numgroup;
        stud[i].numgroup = tmp;
        // ВЫВОД ДАННЫХ  
        cout << endl << "Nomer gruppi\t" << stud[i].numgroup <<"\tfamilia\t"<<stud[i].family <<"\tsredniy bal\t"<< mideval[i] << endl;
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
        cout << endl ;
        cout << endl << "Sredniy bal > 4.0" << endl;
        // ЕСЛИ МЕТКА БОЛЬШЕ НУЛЯ -  таких студентов нет - вывести соответствующее сообщение
if(count_loop > 0)
        for(int i = 0; i < IND; ++i) {
                if(mideval[i] > 4.0){
                    // ВЫВОД ДАННЫХ  
        cout  <<"Familiya " << stud[i].family << "\tsredniy bal\t" << mideval[i] << endl;
                        }
                    }
        else cout << "\t\tnikto ne nabral" << endl;
 
system("pause");
return 0;
}
    // ВВОД ДАННЫХ О СТУДЕНТАХ
void input(Student &stud,int ind){
        cout << endl << "Familia studenta  " << (ind + 1) << "\t";
        cin >> stud.family;
        cout << "Nomer  gruppi:  ";
        cin >> stud.numgroup;
        cout << "Vvedite 5 ocenok:" << endl;
        for(int i = 0;i < SIND;i++)
        cin >> stud.eval[i];
 
}
// ВЫЧИСЛЕНИЕ СРЕДНЕГО БАЛЛА ИЗ ПЯТИ ОЦЕНОК 
// ДЛЯ КАЖДОГО СТУДЕНТА  
float mid_eval(Student &stud){
        float m_eval = 0;
for(int i = 0; i < SIND;i++){
        m_eval += stud.eval[i];}
        m_eval /= SIND;
    return m_eval;  // ВЕРНУТЬ СРЕДНИЙ БАЛЛ В  MAIN()
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru