Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 10
1

Отсортировать массив структур по одному полю

22.12.2019, 17:39. Показов 4086. Ответов 3

Author24 — интернет-сервис помощи студентам
Само задание: "Учитывая информацию из лицензий, выданных на приобретение оружия для охоты: Ф.И.О., дата выдачи лицензии, тип оружия, его стоимость, необходимо вывести на экран всю информацию, отсортированную по убыванию стоимости оружия".

Сортировка одним из методов: прямого обмена (метод пузырька), прямого выбора, прямыми включениями.

Что-то похожее на начало кода:

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
#include<iostream>
using namespace std;
 
int main()
{
const int n=3;
    
struct soft {
          char fio [20];
          char data [10];
          char tip [15];
          int stoimost;
    
             };
             
soft lic[n];
int i;
 
for(i=0;i<n;i++)
    {
 cout<<"Введите Ф.И.О: ";
     cin>>lic[i].fio;
 cout<<"Введите дату выдачи лицензии: ";
     cin>>lic[i].data;
 cout<<"Введите тип оружия: ";
     cin>>lic[i].tip;
 cout<<"Введите стоимость оружия: ";
     cin>>lic[i].stoimost;
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2019, 17:39
Ответы с готовыми решениями:

Отсортировать массив структур по заданному полю
std::sort(line.begin(), line.end(), (const data &amp;A, const data &amp;B)-&gt;bool {return A.all_place &lt;...

Отсортировать массив структур по заданному полю
Подскажите пожалуйста как отсортировать массив структур по полю (РОСТА студента) и после этого...

Отсортировать массив из структур по одному из полей структуры любым способом
Отсортировать массив из структур по одному из полей структуры любым способом.

Отсортировать массив структур типа "Znak" по заданному полю
Вот что есть, помогите дальше... Я Ввожу знак зодиака и у меня должно сортировать в том порядке в...

3
85 / 34 / 20
Регистрация: 15.12.2019
Сообщений: 88
22.12.2019, 17:49 2
Сортировка методом прямого выбора:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 
void sortVib(soft lic[], int counter) //функция сортировки выбором
{
    soft pivot; int i, j;
    for (i = 1; i < counter; i++)
    {
        pivot = lic[i];
        for (j = i - 1; j >= 0 && (lic[j].sredball > pivot.sredball); j--)
            lic[j + 1] = lic[j];
        lic[j + 1] = pivot;
    }
}
Сортировка QuickSort:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void sortQuick(soft lic[], int left, int right) //функция сортировки QuickSort (рекурсивная)
{
    int i = left, j = right;
    STUDENT pivot = lic[(left + right) / 2];
    while (i <= j)
    {
        while (lic[i].sredball > pivot.sredball) i++;
        while (lic[j].sredball < pivot.sredball) j--;
        if (i <= j)
        {
            swap(lic[i], lic[j]);
            i++; j--;
        }
    }
    if (left < j) sortQuick(lic, left, j);
    if (i < right) sortQuick(lic, i, right);
}
Пример вызова:
C++
1
2
sortVib(lic,n);
sortQuick(lic,0,n-1);
0
0 / 0 / 0
Регистрация: 08.12.2019
Сообщений: 10
22.12.2019, 19:59  [ТС] 3
Как добавить сортировку (методом прямого выбора) в программу, куда её впихнуть и как вывести результат после сортировки?
0
85 / 34 / 20
Регистрация: 15.12.2019
Сообщений: 88
22.12.2019, 20:25 4
Лучший ответ Сообщение было отмечено Houston1337 как решение

Решение

Ну вы прям ленитесь
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
#include<iostream>
using namespace std;
 
struct soft {
    char fio[20];
    char data[10];
    char tip[15];
    int stoimost;
 
};
 
void sortVib(soft[], int);
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    const int n = 3;
 
 
    soft lic[n];
    int i;
 
    for (i = 0; i < n; i++)
    {
        cout << "Введите Ф.И.О: ";
        cin >> lic[i].fio;
        cout << "Введите дату выдачи лицензии: ";
        cin >> lic[i].data;
        cout << "Введите тип оружия: ";
        cin >> lic[i].tip;
        cout << "Введите стоимость оружия: ";
        cin >> lic[i].stoimost;
    }
 
    sortVib(lic, n);
 
    cout << "\nФ.И.О.\t\tДата\tТип\tCтоимость\n" << "-----------------------------------------------\n";
    for (i = 0; i < n; i++)
        cout << lic[i].fio << "\t\t" << lic[i].data << "\t" << lic[i].tip << "\t" << lic[i].stoimost << "\n";
}
 
void sortVib(soft lic[], int counter) //функция сортировки выбором
{
    soft pivot; int i, j;
    for (i = 1; i < counter; i++)
    {
        pivot = lic[i];
        for (j = i - 1; j >= 0 && (lic[j].stoimost < pivot.stoimost); j--)
            lic[j + 1] = lic[j];
        lic[j + 1] = pivot;
    }
}
1
22.12.2019, 20:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2019, 20:25
Помогаю со студенческими работами здесь

Сортировка массива структур по одному полю
Приветствую. Есть задача, практически аналогичная моей:...

Сортировка массива структур по одному полю
Приветствую. Задача: отсортировать по возрастанию структуру по одному полю. Вчера поднимал тему:...

Сортировка массива(вектора)структур по одному полю
Код:#include &lt;iostream&gt; #include &lt;sstream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; struct...

В файле имеются 14 записей с полями. В начале отсортировать их по одному полю, потом по другому
Имеется файл, в котором есть поля: №(номер), ФИО, дата рождения, место работы, стаж. Подскажите,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru