Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вопрос по мелочи https://www.cyberforum.ru/ cpp-beginners/ thread44874.html
Здравсвуйте! Когда-то , недавно, мы обсуждали тему среднее арифметическое числа. Я вроде понял её, но есть маленький нюанс. Вот код: #include <iostream> using namespace std; int main() {...
C++ Решить систему неравенств (результат представить в виде массива)
Задали практику в С++ но учить будем ее только в сентябре поэтому прошу решить легинькую задачку на массивы вычислить Z ={ X*Y; sqr(X)+sqr(Y) <1, sqrt(X*Y); sqr(X) + sqr(Y) >= 1 при...
C++ ошибка при компиляции e2093
Создаю класс чисел: class pcmx { public: int re,im; pcmx (int r=0, int i=0) {re=r; im=i;} int GetRe(){return re;} int GetIm(){return im;} pcmx(pcmx&);
C++ макрос <L> не работает Подскажите, как исправить эту ошибку? Error 1 error C2440: 'initializing' : cannot convert from 'const wchar_t ' to 'LPCSTR' d:\master\createdevice\main.cpp 151 (Иными словами почему-то макрос... https://www.cyberforum.ru/ cpp-beginners/ thread44778.html
C++ какая то ошибка в книге https://www.cyberforum.ru/ cpp-beginners/ thread44769.html
При компилировки кричит на 1.Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib proba 2.Error 2 fatal error LNK1120: 1 unresolved...
Visual C++ 2008 express edition - проблема с *.exe C++
Может быть я зря ломаю голову и эта экспресс версия не преднозначена для создания самостоятельных exe'шников, но все таки спрошу. Создаю Release версию программы, у меня она работает, а на других...
C++ Считать данные из xls файла
Подскажите, пожалуйста полному чайнику как считать данные из определенного столбца, определенной строчки екселевского файла. Заранее спасибо
C++ безвыходное положение :( Доброго времени суток! Я очень надеюсь на вашу помощь. На практике мне задали 6 заданий. 4 я благополучно решил, а две - не смог, так как подобного на лекциях и практических занятий нам не давали.... https://www.cyberforum.ru/ cpp-beginners/ thread44698.html
C++ создание таблицы умножения, error https://www.cyberforum.ru/ cpp-beginners/ thread44692.html
Здравствуйте дорогие обитатели форума, собственно я здесь новенький и отношусь так сказать к разряду "хеллоувёрлдщиков"... ну это так, а так о чем я: Собственно вот код #include <cstdlib>...
C++ Как отправить программу работать в фоновый режим? Как отправить программу работать в фоновый режим?:help: https://www.cyberforum.ru/ cpp-beginners/ thread44688.html
Эксперт С++
3055 / 1397 / 421
Регистрация: 19.01.2009
Сообщений: 3,760
24.07.2009, 01:45 0

Сортировка массива структур

24.07.2009, 01:45. Просмотров 1438. Ответов 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
#include <windows.h>
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
struct student 
{
    char FIO[40];
    int ngr;
    int ocen;
};
 
 
#define MAX_STUDENTS 10
 
void vvod(student *IB);
void sort(student *IB);
void printAvgBall(student *IB);
 
 
void vvod(student *IB)
{
    char z[40];
 
    for(int i=0; i<MAX_STUDENTS; i++)
    {
        cout<<"Фамилия: \n";
        cin.getline(IB[i].FIO,40);
        
        cout<<"Имя: \n";
        cin.getline(z,40);
        IB[i].ngr=atoi(z);
        
        cout<<"Средний балл: \n";
        cin.getline(z,40);
        IB[i].ocen=atoi(z);
     }                
}
 
 
 
 
void sort(student *IB)
{
    student sor;
 
    for(int i=0; i<MAX_STUDENTS-1; i++)
        if(IB[i].ngr>IB[i+1].ngr)
        {
            // меняем местами
            memcpy(&sor, &IB[i+1],   sizeof(student));
            memcpy(&IB[i+1], &IB[i], sizeof(student));
            memcpy(&IB[i], &sor,     sizeof(student));
        }
 
    // выводим на экран       
    for(int i=0; i<MAX_STUDENTS; i++)
        cout<<IB[i].FIO<<"  "<<IB[i].ngr<<"  "<<IB[i].ocen<<endl;
}
 
 
void printAvgBall (student *IB)
{
    cout<<"Студенты, средний бал которыйх более 4.0: \n";
 
    int count = 0; 
 
    for(int i=0; i<MAX_STUDENTS; i++)
        if (IB[i].ocen>4)
            cout<<IB[i].FIO<<"  "<<IB[i].ngr<<"  "<<IB[i].ocen<<endl;
 
    if (!count)
        cout<<"Таких нет. \n";
}
 
 
void main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    student *IB=new student[10];
    vvod(IB);
    sort(IB);
    printAvgBall(IB);
 
    delete IB;
}
Замечания по поводу выбранных типов данных в структуре:
C++
1
2
3
4
5
6
struct student 
{
    char FIO[40];
    int ngr;
    int ocen;
};
Для номера группы лучше выбрать тип char[], т.е. строковый тип, а не int.
Для среднего балла лучше использовать float.

Вернуться к обсуждению:
Сортировка массива структур
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2009, 01:45
Готовые ответы и решения:

Сортировка массива структур через сортировку массива указателей
Ошибка возникает в функции void sort(student **ppStud, int k, char ch). Кто видит ошибку -...

Сортировка массива структур
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...

Сортировка массива структур
Разработать программу, реализующую сортировку массива структур (50 элементов). В качестве элемента...

Сортировка массива структур
Господа есть массив структур, необходимо его отсортировать по полю name с помощью функции qsort....

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