Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.11.2017
Сообщений: 18

Что нужно добавить, чтобы отсортировать готовый двумерный массив?

14.04.2018, 17:23. Показов 728. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В конце после изменения массива надо его отсортировать любым способом, а я не могу понять как.
Что нужно добавить?
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
#include <iostream>
#include <math.h>
#include <locale>
using namespace std;
void main()
{
    setlocale(LC_ALL, "ukrainian");
    const int m = 2, n = 3;
    int i, j;
    float A[m][n], max = 0;
    cout << "Введіть масив розмірністю 2x3: " << endl;
    for (i = 0; i<m; i++)
        for (j = 0; j<n; j++)
        {
            cin >> A[i][j];
            if (fabs(A[i][j])>fabs(max))
                max = A[i][j];
        }
    cout << "Вивід нового масиву: " << endl;
    for (i = 0; i<m; i++)
    {
        cout << std::endl;
        for (j = 0; j<n; j++)
        {
            A[i][j] += max;
            cout << A[i][j] << "\t";
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2018, 17:23
Ответы с готовыми решениями:

Массив: что нужно добавить, чтобы вывести максимальный элемент?
sseg segment db 128 dup(?) sseg ends dseg segment A db 1,2,3,4,5 B db 5 dup(?) dseg ends cseg segment ...

Пожалуйста, нужно отсортировать двумерный массив
Всем привет. Помоготе, пожалуйста.. Вторую неделю не могу сделать задание, через два дня уже сдавать... В задании нужно упорядочить...

Отсортировать двумерный массив так, чтобы максимальные и минимальные значения строк были упорядочены
Привет всем нуждаюсь в помощи с задачей по С++. Она выглядит так: Дан двумерный массив. Разместить его строки так, чтобы при их просмотре...

9
1 / 1 / 1
Регистрация: 30.05.2017
Сообщений: 63
14.04.2018, 17:41
По чем сортировать? По строкам или столбцам?
0
0 / 0 / 0
Регистрация: 14.11.2017
Сообщений: 18
14.04.2018, 17:43  [ТС]
Цитата Сообщение от murphy1337 Посмотреть сообщение
По чем сортировать? По строкам или столбцам?
Не важно вообще. Как угодно.
0
0 / 0 / 0
Регистрация: 14.11.2017
Сообщений: 18
14.04.2018, 19:13  [ТС]
Нужно отсортировать массив после изменения (!!)абсолютно любым(!!) способом (не важно как, по столбцам или по строкам, главное, что бы просто было отсортировано).

Но программа как-то странно сортирует. Иногда правильно, иногда нет.

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
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <math.h>
#include <locale>
using namespace std;
void main()
{
    setlocale(LC_ALL, "ukrainian");
    const int m = 2, n = 3;
    int i, j;
    float A[m][n], max = 0;
    cout << "Введiть масив розмiрнiстю 2x3: " << endl;
    for (i = 0; i<m; i++)
        for (j = 0; j<n; j++)
        {
            cin >> A[i][j];
            if (fabs(A[i][j])>fabs(max))
                max = A[i][j];
        }
    cout << " " << endl;
    cout << "Вивiд нового масиву: " << endl;
    for (i = 0; i<m; i++)
    {
        cout << std::endl;
        for (j = 0; j<n; j++)
        {
            A[i][j] += max;
            cout << A[i][j] << "\t";
        }
    }
    cout << endl;
    cout << " " << endl;
    cout << "Вивiд масиву пiсля застосування сортування бульбашкою: "<<endl;
    cout << " " << endl;
    float temp = 0;
        for (int z = 0; z<(m * n - 1); z++)   
                                                  
            for (int i = 0; i<m; i++) {
                for (int j = 0; j<n; j++) {
                    
                    if (i == m - 1 && j == n - 1) {  
                        continue;
                    }
                    
 
                    if (A[i][j] > A[i][j + 1]) { 
                        temp = A[i][j];        
                        A[i][j] = A[i][j + 1];
                        A[i][j + 1] = temp;
                    }
                }
            }
    
    for (int i = 0; i<m; i++) {
        for (int j = 0; j<n; j++) {
            cout.width(5);
            cout << A[i][j];
        }
        cout << " "<<endl;
        cout << " " << endl;
    }
}
Пример сортировки был взят отсюда

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
 
 
using namespace std;
 
int main () {
   const int ROW = 3;       //Строки массива
   const int COL = 4;       //Колонки массива
   int arr[ROW][COL];       //Двумерный массив
    int count_ = ROW * COL;     //для заполнения массива числами по порядку
    int temp = 0;
 
   srand(time(0u));     //Для генератора случайных чисел
 
 
   /*ЗАПОЛНЕНИЕ ДВУМЕРНОГО МАССИВА*/
   for (int i=0; i<ROW; i++){
    for (int j = 0; j<COL; j++){
        //arr[i][j] = rand() % 100 + 1; //Так можно задавать random
        arr[i][j] = count_ --;          //заполнение в порядке убывания
    }
   }
   /*КОНЕЦ ЗАПОЛНЕНИЯ ДВУМЕРНОГО МАССИВА*/
 
   /*ВЫВОД ЗНАЧЕНИЙ ДВУМЕРНОГО МАССИВА НА ЭКРАН*/
   cout << "original:\n";
   for (int i = 0; i<ROW; i++){
    for (int j = 0; j<COL; j++){
        cout.width(5);
        cout << arr[i][j];
    }
        cout << '\n';
   }
   /*КОНЕЦ ВЫВОДА ЗНАЧЕНИЙ ДВУМЕРНОГО МАССИВА НА ЭКРАН*/
 
 
   /*СОРТИРОВКА ДВУМЕРНОГО МАССИВА*/
   cout << "\n\nsorted:\n";
    for (int m=0; m<(ROW * COL - 1); m++)   //сдвиги очередных элементов в правильную позицию
        /*сдвиг элемента массива в правильную позицию*/
        for (int i = 0; i<ROW ; i++){
            for (int j = 0; j<COL; j++){
                /*АНАЛИЗ НА ПОСЛЕДНИЙ ЭЛЕМЕНТ МАССИВА*/
                    if (i==ROW-1 && j==COL-1){  //Если строка последняя и справа тупик, то ничего не делаем
                            continue;
                    }
                /*КОНЕЦ АНАЛИЗА НА ПОСЛЕДНЮЮ СТРОКУ*/
 
                if (arr[i][j] > arr[i][j+1]){ //Если элемент не на своей позиции
                   temp = arr[i][j];        //Обмен местами
                   arr[i][j] = arr[i][j+1];
                   arr[i][j+1] = temp;
                }
           }
        }
   /*КОНЕЦ СОРТИРОВКИ ДВУМЕРНОГО МАССИВА*/
 
   /*ВЫВОД ЗНАЧЕНИЙ ДВУМЕРНОГО МАССИВА НА ЭКРАН*/
   for (int i = 0; i<ROW; i++){
    for (int j = 0; j<COL; j++){
        cout.width(5);
        cout << arr[i][j];
    }
        cout << '\n';
   }
   /*КОНЕЦ ВЫВОДА ЗНАЧЕНИЙ ДВУМЕРНОГО МАССИВА НА ЭКРАН*/
 
   std::cin.get();
}
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
14.04.2018, 21:53
Очень интересно...
Введiть масив розмiрнiстю 2x3:
3 2 4 6 5 4

Вивiд нового масиву:

9 8 10
12 11 10

Вивiд масиву пiсля застосування сортування бульбашкою:

8 9 10

10 11 12

Press any key to continue . . .
0
0 / 0 / 0
Регистрация: 14.11.2017
Сообщений: 18
15.04.2018, 08:50  [ТС]
Цитата Сообщение от Hitoku Посмотреть сообщение
Очень интересно...
Очень интересно, что вам интересно?

если вы о том, что она сортирует, то как я говорил, иногда правильно, а иногда нет.

ведiть масив розмiрнiстю 2x3:
-20 5 45 8 -9 4

Вивiд нового масиву:

25 50 90
53 36 49

Вивiд масиву пiсля застосування сортування бульбашкою:

25 50 53

36 49 90

а должно б в конце быть:

25 36 49
50 53 90

Помощи в этом я и ищу.
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
15.04.2018, 11:15
dormin, ну у меня так и выводит, как Вам надо
Введiть масив розмiрнiстю 2x3:
-20 5 45 8 -9 4

Вивiд нового масиву:

25 50 90
53 36 49

Вивiд масиву пiсля застосування сортування бульбашкою:

25 36 49

50 53 90

Для продолжения нажмите любую клавишу . . .
0
0 / 0 / 0
Регистрация: 14.11.2017
Сообщений: 18
15.04.2018, 11:39  [ТС]
Очень странно, но я ж вам тоже не лгу.
Может быть можно как-то переписать, что бы этой ошибки не было?
И ещё, я использую visual studio 2015, если это имеет значение.
Миниатюры
Что нужно добавить, чтобы отсортировать готовый двумерный массив?  
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
05.05.2018, 23:15
Цитата Сообщение от dormin Посмотреть сообщение
(!!)абсолютно любым(!!) способом
dormin, здравствуйте! Чтобы точно не ошибиться, вы можете скопировать элементы матрицы в одномерный массив, отсортировать его, а затем скопировать обратно в матрицу.
0
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
05.05.2018, 23:52
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
#include <iostream>
#include <math.h>
#include <locale>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "ukrainian");
    const int m = 2, n = 3;
    int i, j;
    float A[m][n], max = 0;
    cout << "Введіть масив розмірністю 2x3: " << endl;
    for (i = 0; i<m; i++)
        for (j = 0; j<n; j++)
        {
            cin >> A[i][j];
            if (fabs(A[i][j])>fabs(max))
                max = A[i][j];
        }
    cout << "\nВивід нового масиву: ";
    for (i = 0; i<m; i++)
    {
        cout << std::endl;
        for (j = 0; j<n; j++)
        {
            A[i][j] += max;
            cout << A[i][j] << "\t";
        }
    }
 
    std::vector<double> vec;
    for (i = 0; i < m; ++i)
      for (j = 0; j < n; ++j)
        vec.push_back(A[i][j]);
 
    std::sort(vec.begin(), vec.end());
 
    std::cout << "\n\nSorted:" << std::endl;
    for (auto it = vec.cbegin(), itEnd = vec.cend(); it != itEnd; ++it)
    {
      std::cout << *it
                << (((it - vec.cbegin()) + 1) % n ? " " : "\n");
    }
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2018, 23:52
Помогаю со студенческими работами здесь

Нужно отсортировать двумерный массив от большего к меньшему (в примере логика работает с точностью до наоборот)
//- значение - id function SortArray(array) { for(var i=0;i&lt;array.length; i++){ for(var j = array.length; j...

Нужно добавить в двумерный массив строку с заданным номером
Люди помогите. Нужно добавить в двумерный массив строку с заданным номером. Массив сформировала а как добавить строчку именно с номером...

Что нужно добавить, чтобы страница загрузилась?
#include &quot;mainwindow.h&quot; #include &quot;ui_mainwindow.h&quot; #include &lt;QUrlQuery&gt; #include &lt;QDebug&gt; MainWindow::MainWindow(QWidget...

Нужно быстрой сортировкой отсортировать массив из 20 элементов чтобы первые 10 шли по возрастанию а последние
Нужно при помощи быстрой сортировки отсортировать массив из 20 элементов чтобы первые 10 шли по возрастанию а последние 10 наоборот. Не...

Что нужно добавить после ch чтобы программа запрашивала время?
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { char ch; int zp = 100, time, itog; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru