Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DenKG
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 418
#1

Ошибка в сортировке элементов структуры - C++

24.05.2016, 05:45. Просмотров 80. Ответов 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
void sort(COMPANIES *final, int CompNum)//Сортировка
{
    int i;
    int temp;
    COMPANIES *temp = new COMPANIES[CompNum];
    int colNum;
    cout << "Введите номер стоблца, по которому хотите отсортировать таблицу:\n"
        << "1.Название компании; 2.Количсетво продуктов; 3.Продажи за год; 4.Часть рынка;" << endl;
    cin >> colNum;
    cout << "Как должна производиться сортировка?\n"
        << "1.По возрастанию; 2.По убыванию;" << endl;
    int sortType;
    cin >> sortType;
    if (colNum == 1 && sortType == 1) {
        for (int j = 0; j < CompNum - i - 1; j++)
        {
            if (strcmp(final[j].NAME, final[j + 1].NAME) > 0)
            {
                temp = final[j];
                final[j] = final[j + 1];
                final[j + 1] = temp;
            }
        }
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2016, 05:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в сортировке элементов структуры (C++):

Помещение структуры в вектор, удаление структуры, изменение элементов структуры - C++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

Ошибка в сортировке - C++
Часть программы я сделал, но сортировка массива выходит кривой, та строка, которая после сортировки должна быть первой, внезапно...

Ошибка в сортировке - C++
#include &lt;iostream&gt; using namespace std; int main() { int A, c; for (int i = 0; i &lt; 3; i++) { for (int j = 0; j &lt; 3;...

Ошибка в сортировке - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; int const N = 5; using namespace std; class book{ ...

Ошибка в элементарной сортировке - C++
//sortirovka n=9; for(flag=false;flag=false;) { flag=false; for(i=0; i&lt;n; i++) { if (a&gt;a) {swap(a,a);...

Ошибка в сортировке массива - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;time.h&gt; using namespace std; const int nmax = 100; //Функция создает...

4
zss
Модератор
Эксперт С++
6537 / 6099 / 2009
Регистрация: 18.12.2011
Сообщений: 15,867
Завершенные тесты: 1
24.05.2016, 06:35 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
void sort(COMPANIES *final, int CompNum)//Сортировка
{
    //int i;
    //int temp;     удалить !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    //COMPANIES *temp = new COMPANIES[CompNum];     удалить !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    int colNum;
    cout << "Введите номер стоблца, по которому хотите отсортировать таблицу:\n"
        << "1.Название компании; 2.Количсетво продуктов; 3.Продажи за год; 4.Часть рынка;" << endl;
    cin >> colNum;
    cout << "Как должна производиться сортировка?\n"
        << "1.По возрастанию; 2.По убыванию;" << endl;
    int sortType;
    cin >> sortType;
    if (colNum == 1 && sortType == 1) {
       for (int i = 0; i < CompNum; i++)
        for (int j = 0; j < CompNum - i-1; j++)
        {
            if (strcmp(final[j].NAME, final[j + 1].NAME) > 0)
            {
                COMPANIES temp = final[j]; // !!!! для класса COMPANIES должен быть перегружен operator=
                final[j] = final[j + 1];
                final[j + 1] = temp;
            }
        }
    }
}
0
DenKG
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 418
24.05.2016, 06:40  [ТС] #3
А выводить, как обычную структуру?
0
zss
Модератор
Эксперт С++
6537 / 6099 / 2009
Регистрация: 18.12.2011
Сообщений: 15,867
Завершенные тесты: 1
24.05.2016, 07:07 #4
Как Вам нравится, так и выводите!
0
DenKG
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 418
24.05.2016, 07:43  [ТС] #5
Вот код, но выводит неправильно:
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
void sort(COMPANIES *final, int CompNum)//Сортировка
{
    int i=0;
    int colNum;
    cout << "Введите номер стоблца, по которому хотите отсортировать таблицу:\n"
        << "1.Название компании; 2.Количсетво продуктов; 3.Продажи за год; 4.Часть рынка;" << endl;
    cin >> colNum;
    //cout << "Как должна производиться сортировка?\n"
    //  << "1.По возрастанию; 2.По убыванию;" << endl;
    /*int sortType;
    cin >> sortType;*/
    if (colNum == 1 /*&& sortType == 1*/) {
        for (int j = 0; j < CompNum - i - 1; j++)
        {
            if (strcmp(final[j].NAME, final[j + 1].NAME) > 0)
            {
                COMPANIES temp = final[j];
                final[j] = final[j + 1];
                final[j + 1] = temp;
                cout << "\n+--------------------+--------------------+--------------------+--------------------+\n"
                    << "|" << setw(20) << left << "Название компании"
                    << "|" << setw(20) << left << "Количество продуктов"
                    << "|" << setw(20) << left << "Продажи за год"
                    << "|" << setw(20) << left << "Часть рынка %" << "|";
                for (int i = 0; i < CompNum; i++) {
 
                    cout << "\n+--------------------+--------------------+--------------------+--------------------+\n"
                        << "|" << setw(20) << left << final[i].NAME
                        << "|" << setw(20) << left << final[i].PRODUCTNUMBER
                        << "|" << setw(20) << left << final[i].YEARSALESVOLUME
                        << "|" << setw(20) << left << final[i].MARKETPERCENT << "|";
                }
                cout << "\n+--------------------+--------------------+--------------------+--------------------+\n";
            }
            
 
        }
    }
}
Вывод:
0
Миниатюры
Ошибка в сортировке элементов структуры  
24.05.2016, 07:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2016, 07:43
Привет! Вот еще темы с ответами:

Ошибка в быстрой сортировке - C++
Мне нужно сравнить как минимум три сортировки массива. Т.к. плохо знаю С++ нашла шаблоны. И вот все на что я способна: :D #include...

Ошибка в порязрядной сортировке?! - C++
Вообщем дали задание отсортировать слова с помощью цифровой(поразрядной) сортировки,реализовал ее сам,вроде все компилиться,но не...

Ошибка в сортировке пузырьком - C++
написана программа сортировки пузырьным методом.но когда ввожу числа в массив работает неправильно. вот код с++ #include &lt;iostream&gt; ...

Ошибка в сортировке пузырьком - C++
помогите разобраться в чем заключается ошибка. при выполнении функции происходит ошибка #include &lt;iostream&gt; using namespace...


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

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

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