0 / 0 / 0
Регистрация: 08.09.2017
Сообщений: 40
1

Сортировка Структуры

29.11.2017, 01:28. Показов 1646. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста, не получается исправить ошибку.
Суть: задается кафедра, по этой кафедре сортируются студенты и выводятся по возрастанию(В зависимости от кол-ва книг).
В моем случае выводит все кафедры подряд, хотя сортировка по кол-ву работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        cout << "Введите название кафедры для сортировки:";
        cin >> kaf;
        system("cls");
        for (int i = 0; i <= n; i++) {
            if (strcmp(kaf, students[i].kafedra) == 0) {
                for (int j = 0; j < n; j++) {
                    if (students[j].kolvoknig > maxi) {
                        maxi = students[j].kolvoknig;
                        position = j;
                        cout << "Студент " << position + 1 << endl;
                        cout << "Имя:" << students[position].name << endl;
                        cout << "Фамилия:" << students[position].surname << endl;
                        cout << "Кафедра:" << students[j].kafedra << endl;
                        cout << "Кол-во книг:" << students[j].kolvoknig << endl << endl;
                    }
                }
            }
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2017, 01:28
Ответы с готовыми решениями:

Структуры. Сортировка массива структуры
Здравствуйте! В чем моя ошибка?? Нужно отсортировать массив структуры по возрастанию среднего...

Структуры(сортировка)
есть программа с описание структуры......вбиваем начальный маршрут(точка отправки) и конечный(точка...

Структуры. Сортировка
Всем привет! Подскажите пожалуйста, если я создал структуру с тремя компонентами:...

Сортировка структуры
Есть структура struct v{ string one; string two; int three; }; Подскажите как...

5
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,617
29.11.2017, 10:45 2
И где здесь сортировка? Ты не переставляешь элементы.
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
29.11.2017, 11:08 3
Лучший ответ Сообщение было отмечено Gnomee как решение

Решение

Все cout<< надо убрать нафиг, ты определённо сам не понимаешь, зачем оно тебе надо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    for (int i = 0; i < n-1; i++) {
        if (strcmp(kaf, students[i].kafedra) == 0) {
            position = i;
            maxi = students[i].kolvoknig;
            for (int j = i+1; j < n; j++) {
 
                if (strcmp(kaf, students[i].kafedra) == 0 && students[j].kolvoknig > maxi) {
                    maxi = students[j].kolvoknig;
                    position = j;
                }
            }
            tmp= students[i];
            students[i]= students[position];
            students[position] = tmp;
        }
    }
    for (int i = 0; i < n; i++) {
        cout << "Студент " << i << endl;
        cout << "Имя:" << students[i].name << endl;
        cout << "Фамилия:" << students[i].surname << endl;
        cout << "Кафедра:" << students[i].kafedra << endl;
        cout << "Кол-во книг:" << students[i].kolvoknig << endl << endl;
    }
1
0 / 0 / 0
Регистрация: 08.09.2017
Сообщений: 40
29.11.2017, 18:30  [ТС] 4
Kuzia domovenok, Так мне же нужно вывести полный список студентов, с индексом заданной кафедры, а если выводить таким образом, то будет выводить всю заданную базу студентов?

Добавлено через 3 минуты
Kuzia domovenok, Вы все правильно написали, но не совсем поняли условие, спасибо за помощь.
Вот таким образом мне нужно было вывести, что бы cout был внутри(Ваш код):
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
    case 2:
        cout << "Введите название кафедры для сортировки:";
        cin >> kaf;
        system("cls");
        for (int i = 0; i < n - 1; i++) {
            if (strcmp(kaf, students[i].kafedra) == 0) {
                position = i;
                maxi = students[i].kolvoknig;
                for (int j = i + 1; j < n; j++) {
                    if (strcmp(kaf, students[i].kafedra) == 0 && students[j].kolvoknig > maxi) {
                        maxi = students[j].kolvoknig;
                        position = j;
                    }
                }
                tmp = students[i].kolvoknig;
                students[i] = students[position];
                students[position].kolvoknig = tmp;
                cout << "Студент " << i << endl;
                cout << "Имя:" << students[i].name << endl;
                cout << "Фамилия:" << students[i].surname << endl;
                cout << "Кафедра:" << students[i].kafedra << endl;
                cout << "Кол-во книг:" << students[i].kolvoknig << endl << endl;
            }
        }
        break;
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
29.11.2017, 18:38 5
Gnomee, ты понимаешь, что сортировка и вывод это две разные задачи? Тебе вчера весь вечер об этом твердили в другой теме, но ты просто упорото пихаешь вывод в цикл сортировки! Что с тобой не так-то?

Ну один раз смешал своих мух с котлетами, ну проверь тогда уж как это будет работать, убедись в том что не будет и не пихай больше cout в цикл! Нет, будем вторые сутки этот вопрос обсасывать!

Я не сразу понял, что нужно не просто всех выводить вместе, тогда я сделаю так:
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
    for (int i = 0; i < n-1; i++) {
        if (strcmp(kaf, students[i].kafedra) == 0) {
            position = i;
            maxi = students[i].kolvoknig;
            for (int j = i+1; j < n; j++) {
 
                if (strcmp(kaf, students[i].kafedra) == 0 && students[j].kolvoknig > maxi) {
                    maxi = students[j].kolvoknig;
                    position = j;
                }
            }
            tmp= students[i];
            students[i]= students[position];
            students[position] = tmp;
        }
    }
    for (int i = 0; i < n; i++) {
        if (strcmp(kaf, students[i].kafedra) == 0) {
           cout << "Студент " << i << endl;
           cout << "Имя:" << students[i].name << endl;
           cout << "Фамилия:" << students[i].surname << endl;
           cout << "Кафедра:" << students[i].kafedra << endl;
           cout << "Кол-во книг:" << students[i].kolvoknig << endl << endl;
        }
    }
Обрати внимание, что даже в этом случае я не пихаю вывод в сортировку
0
0 / 0 / 0
Регистрация: 08.09.2017
Сообщений: 40
29.11.2017, 21:20  [ТС] 6
Kuzia domovenok, Наконец то понял о чем вы говорите

Добавлено через 27 минут
Kuzia domovenok, Как исправить ошибку?

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
        const int n = 10;
struct Lib //Структура библиотека
{
    char name[20];
    char surname[20];
    char kafedra[20];
    int kolvoknig;
} students[n];
 
int main() //Студенты
{
    Lib students[n] =
    {
        { "Kolya","Bob","EM",5 },
        { "Nikita","Chaee","TM",8 },
        { "Sasha","Kesys","EM",10 },
        { "Misha","Loesa","RT",1 },
        { "Mikola","Doper","TM",3 },
        { "Elena","Ewosha","PR",14 },
        { "Alena","Soawp","PR",7 },
        { "Evgenyi","Sdweas","PR",15 },
        { "Mixail","Chpor","TM",3 },
        { "Oleg","Necheer","RT",2 },
    };
 
// В данном месте ошибка
        tmp = students[i];
        students[i] = students[position];
        students[position] = tmp;
Добавлено через 1 час 59 минут
/del
0
29.11.2017, 21:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2017, 21:20
Помогаю со студенческими работами здесь

Сортировка структуры
Всем привет. Нужна помощь при сортировке. Во время сортировки углов нужно так же отсортировать их...

Структуры. Сортировка
Здравствуйте, ув. форумчане. Я студент 1ого курса и только недавно начал изучать C++, учился по...

Сортировка и структуры
Задача : &quot;Имеется список 10 политических деятелей. Каждый из 100 опрошенных называет трех...

Сортировка структуры
Отсортировать структуру по желанию пользователя. 1. Вывести на экран книги в алфавитном порядке с...

Сортировка структуры
Второй день бьюсь с сортировкой структур, покажу код, входные и выходные данные: struct TZap{ ...

сортировка структуры.
Возникла проблема при сортировке. возможно в коде есть и моя ошибка. ну суть в том, что он не...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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