Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Мертон_69
0 / 0 / 0
Регистрация: 12.09.2016
Сообщений: 13
#1

Почему не сортируется массив? - C++

07.06.2017, 15:02. Просмотров 180. Ответов 7
Метки нет (Все метки)

Доброго времени суток уважаемые Форумчане,нужно отсортировать в порядке возрастания каждую строку матрицы, код написан, но не сортирует почему-то, подскажите, пожалуйста, в чем ошибка?
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
int main(){
//объявление
int i,j,t,dl,m,max,num1,num2,stec,mass[60][60];
//вводим длину массива
    cin>>t;
    cin>>m;
    dl=m; // переменная, используемая в сортировке
//заполняем массив
for (i = 0; i <= t ; i++)
    {
        for (j = 0; j <= m ; j++){
            mass[i][j]=0 + rand() % 9;  
        }
    }
cout<<endl;
//сортировка
for (i = 0; i <= t ; i++){
j=m;
max=mass[i][0];
while(dl!=0){
    
    if(max<mass[i][j]){
        max=mass[i][j];
        num1=i;
        num2=j;
        stec=mass[i][m];
        mass[i][m]=max;
        mass[num1][num2]=stec;
        }
        dl--;
    }
}
//вывод массива для проверки
for (i = 0; i <= t ; i++)
    {
        for (j = 0; j <= m ; j++){
            cout<<mass[i][j]<<",";  
        }
        cout<<endl;
    }
    system("pause");
return 0;
}
Добавлено через 32 минуты
ошибка вышла, 26-27 строка за место m должно быть dl
http://www.cyberforum.ru/cpp-beginners/thread962428.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2017, 15:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Почему не сортируется массив? (C++):

Почему не сортируется массив?
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace...

Почему не сортируется массив?
#include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int...

Почему не сортируется вектор структур?
Выводится ошибка...

Почему данная реализация связного списка не сортируется по убыванию?
Сформировать список из вещественных чисел. Упорядочить список по убыванию....

Массив не сортируется
Здравствуйте. Программа не сортирует массив, не могу разобраться в чем...

7
lawr
372 / 266 / 478
Регистрация: 09.05.2014
Сообщений: 769
07.06.2017, 15:06 #2
а какой именно алгоритм сортировки вы хотели применить? ну и маленькое замечание- итераторы не могут быть равными размерностям, иначе происходит выход за рамки массива.
0
jurok_85
263 / 247 / 182
Регистрация: 21.02.2013
Сообщений: 589
Завершенные тесты: 1
07.06.2017, 15:10 #3
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
#include <iostream>
using namespace std;
 
int main(){
    int i,j,t,dl,m,max,num1,num2,stec,mass[60][60],k;
//вводим длину массива
    cin>>t;
    cin>>m;
    dl=m; // переменная, используемая в сортировке
//заполняем массив
for (i = 0; i <= t ; i++)
    {
        for (j = 0; j <= m ; j++){
            mass[i][j]=0 + rand() % 9;
        }
    }
cout<<endl;
//сортировка
for (i = 0; i <= t ; i++){
   for(j = 0; j <= m; j++){
        for(k = j+ 1; k <= m; k++){
                if(mass[i][j]> mass[i][k]){
                    stec = mass[i][j];
                    mass[i][j] = mass[i][k];
                    mass[i][k] = stec;
                }
        }
   }
}
//вывод массива для проверки
for (i = 0; i <= t ; i++)
    {
        for (j = 0; j <= m ; j++){
            cout<<mass[i][j]<<",";
        }
        cout<<endl;
    }
    //system("pause");
return 0;
 
}
вот так попробуй. сильно код твой не разбирал. стиль в циклах плоховат - for (i = 0; i <= t ; i++), обычно если t это размер и отсчет с нуля начинаешь то лучше for (i = 0; i < t ; i++). а то в твоей программе заполняешь массив на 3 элемента а заполнится на 4
1
Мертон_69
0 / 0 / 0
Регистрация: 12.09.2016
Сообщений: 13
07.06.2017, 15:15  [ТС] #4
я не знаю как он называется, но сейчас объясню.
допустим есть одномерный массив, в котором 4 элемента, в нем мы ищем максимум и меняем его с последним местами, затем ищем максимум среди 3 элементов и перемещаем, затем в 2, получается после перемещения я беру все кроме последнего и так после каждого перемещения.
писал программу на эту сортировку с одномерным массивом, работает, затем хотел сделать тоже самое, но с 2-ым массивом, но он не сортирует.
на счет итераторов не совсем понял, это вы по поводу dl и m?
0
anapshy
180 / 184 / 170
Регистрация: 14.11.2016
Сообщений: 714
Завершенные тесты: 3
07.06.2017, 15:17 #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
#include <iostream>
#include <ctime>
#include <cstdlib>
int main(void) {
    int t , m, mass[60][60];            // Объявления
    srand(time(NULL));
    std::cin >> t >> m;                 // Размеры матрицы
    for (size_t i = 0; i <= t; i++)     // Заполняем матрицу
        for (size_t j = 0; j <= m; j++)
            mass[i][j] = 0 + rand() % 9;
    std::cout << std::endl;             // Выводим матрицу
    for (size_t i = 0; i <= t; i++) {
        for (size_t j = 0; j <= m; j++)
            std::cout << mass[i][j] << ",";
        std::cout << std::endl;
    }
    std::cout << std::endl;
    for(size_t n(0); n <= t; n++)       // Сортировка
        for(size_t i(0); i <= m; i++)
            for(size_t j(i+1); j <= m; j++)
                if (mass[n][i] > mass[n][j]) {
                    mass[n][j] += mass[n][i];
                    mass[n][i] = mass[n][j] - mass[n][i];
                    mass[n][j] -= mass[n][i];
 
                }
    for (size_t i = 0; i <= t; i++) {   // Вывод матрицы для проверки
        for (size_t j = 0; j <= m; j++)
            std::cout << mass[i][j] << ",";
        std::cout << std::endl;
    }
    system("pause");
    return 0;
}
0
Мертон_69
0 / 0 / 0
Регистрация: 12.09.2016
Сообщений: 13
07.06.2017, 15:31  [ТС] #6
спасибо большое! сортировка работает, сейчас буду исправлять свои ошибки.

Добавлено через 10 минут
конечно ваш вариант работает, но почему мой косячный ?
0
jurok_85
263 / 247 / 182
Регистрация: 21.02.2013
Сообщений: 589
Завершенные тесты: 1
07.06.2017, 15:36 #7
Цитата Сообщение от Мертон_69 Посмотреть сообщение
конечно ваш вариант работает, но почему мой косячный ?
Цитата Сообщение от Мертон_69 Посмотреть сообщение
j=m;
max=mass[i][0];
while(dl!=0){
if(max<mass[i][j]){
max=mass[i][j];
num1=i;
num2=j;
stec=mass[i][m];
mass[i][m]=max;
mass[num1][num2]=stec;
}
dl--; }
в самом начале здесь j = m, потом num1=i; num2=j; и stec=mass[i][m];
mass[i][m]=max;
mass[num1][num2]=stec;
здесь ни что ни на что не меняется
0
Мертон_69
0 / 0 / 0
Регистрация: 12.09.2016
Сообщений: 13
07.06.2017, 15:58  [ТС] #8
я может и заколебал уже, но хочу сделать свой код работоспособным, не всегда же у других решение брать...вообщем поменял код, он менять начал, но не во всех строках, и не сортирует....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (i = 0; i < t ; i++){
j=m;
max=mass[i][0];
while(j!=0){
    
    if(max<mass[i][j]){
        max=mass[i][j];
        num1=i;
        num2=j;
        stec=mass[i][m];
        mass[i][m]=max;
        mass[num1][num2]=stec;
        }
        j--;
    }
}
Добавлено через 15 секунд
0
07.06.2017, 15:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2017, 15:58
Привет! Вот еще темы с решениями:

Не сортируется массив пузырьком
Не получается нормально отсортировать массив( И оператор выбора не работает,...

Определить время, за которое сортируется массив
Подскажите как узнать время за которое отсортировался массив (mas) Внизу...

Неправильно сортируется массив по возрастанию и не находится минимальный элемент
#include &lt;windows.h&gt; #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include...

Почему возможно задать массив с размером -1 (почему такое вообще компилируется)?
Всем привет. Долгое время не писал на плюсах, решил пройтись по основам,...


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

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

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