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

Сортировка данных в Структуре С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача "наименьшее кратное" http://www.cyberforum.ru/cpp-beginners/thread711199.html
вечер добрый, подскажите, как решать задачу, алгоритм сам, вообще она дана в разделе с поиском в ширину. Дано число X и множество цифр D. Требуется дописать к X минимальное количество цифр из D, чтобы получившееся число делилось на k. При этом получившееся число должно быть минимально возможным. Формат входного файла Первая строка входного файла содержит два натуральных числа X и k (1 ≤ X...
C++ Написать функцию которая бы выводила ошибки в случае неверного ввода числа #include <iostream> using namespace std; int cin_int(int min, int max) { while (true) { cout << "Please enter N : "; int n; cin >> n; http://www.cyberforum.ru/cpp-beginners/thread711191.html
C++ Вычисление конечных сумм и произведений:
Помогите пж. вычислить конечные суммы и произведения:)
C++ Вычислить(приближенные формулы)
Помогите пж. вычислить(приближенные формулы) :)
C++ Перегрузка оператора в классе Array http://www.cyberforum.ru/cpp-beginners/thread711159.html
Задали написать перегрузку оператора для класса Array, который будет удалять все повторяющиеся элементы с массива, при этом мы не должны портить исходный массив, т.е. создаем копию исходного массива и изменяем его, вернуть мы должны массив без повторов с размерностью size-n, где n-количество удаленных элементов class Array { int *mas; int size; public: Array ();
C++ считывание двух матриц с файла и их перемножение Помогите: нужно считать две матрицы из файл и их размерность оттуда же, перемножить и записать в другой файл результат; так же должно быть main по минимуму - описаны необходимые переменные и вызов функций:отдельно функция считывания и вывода исходных матриц на экран, отдельно функция перемножения матриц, отдельно функция записи в другой файл и вывода а экран результирующей матрицы подробнее

Показать сообщение отдельно
NeZ
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 10
27.11.2012, 19:39     Сортировка данных в Структуре С++
Доброго времени суток, дорогие форумчане!

Возникла следующая проблема. Нужно отсортировать структуру по полю типа int
Сама структура:
C++
1
2
3
4
5
6
7
8
9
10
11
struct Worker
{
    char fname [32];
    char lname [32];
    char sex [8];
    int year;
    int wage;
    int pension;
 
};
Worker group[100];
А именно wage(зарплата). Сортировать можно в любом порядке. Четкого условия нет

Мысли: Сортировать в цикле. Просто поменять 2 значения местами нельзя, ведь нарушится запить. Т.е сначала "работник" был с одной зарплатой, а потом стал с другой.
Копировать нужно структуру целиком.
C++
1
2
3
4
5
6
7
8
9
for ( int i = 0; i < s; i++) // нужен еще один цикл, ибо он не отсортирует с первого раза
    {
        int wage1 = group[i].wage;
        int wage2 = group[i+1].wage;
            
        if ( wage1 > wage2 )
        {
                       ......
                }
Вопрос: можно ли это сделать вот так?
C++
1
2
3
4
group[s+1] = group[i];
group[i] = group[i+1];
group[i+1] = group[s+1];
//где s количество записей ( "работников" ) s+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
int tmp = 0;
                char strtmp[100];
                
                strcpy( strtmp, group[i].fname ); //фамилии
                strcpy ( group[i].fname, group[i+1].fname );
                strcpy ( group[i+1].fname, strtmp );
 
                strcpy( strtmp, group[i].lname ); //имена
                strcpy ( group[i].lname, group[i+1].lname );
                strcpy ( group[i+1].lname, strtmp );
 
                strcpy( strtmp, group[i].sex ); //пол
                strcpy ( group[i].sex, group[i+1].sex );
                strcpy ( group[i+1].sex, strtmp );
                
                tmp = group[i].year;// дата
                group[i].year = group[i+1].year;
                group[i+1].year = tmp;
 
                tmp = group[i].wage;// зарплата
                group[i].wage = group[i+1].wage;
                group[i+1].wage = tmp;
 
                tmp = group[i].pension;// пенсия 1 || 0
                group[i].pension = group[i+1].pension;
                group[i+1].pension = tmp;
Возможно напутал чего-то, сильно не пинайте, учусь

Готовый код не обязателен, хочу разобраться в данной ситуации. Можно псевдокод Все эти выверты с массивами реализовываются легко, думаю и тут не сложно, главное начать капать в нужном направлении.

Спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru