Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Katusha11
0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 23
1

Массив: Разместить строки матрицы по возрастанию значений первых элементов строк.

18.04.2012, 23:31. Просмотров 2676. Ответов 9
Метки нет (Все метки)

Можете помочь с таким заданием:
Данная целочисленная матрица размером mxn. Нужно разместить строки матрицы по возрастанию значений первых элементов строк.
Вообще не представляю, как это сделать и нужно обязательно без указателей, заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2012, 23:31
Ответы с готовыми решениями:

Упорядочить строки матрицы по возрастанию первых четных положительных элементов строк
Упорядочить строки массива U (10,8) целых чисел по возрастанию первых четных...

Упорядочить строки массива T(9,7) по возрастанию первых элементов строк. Массив ввести из файла
Массив, довольно прост, но мой уровень, пока только "конвертер величин" Сам...

Сортировать строки матрицы n * m в порядке убывания значений первых элементов строк
Данная действительно матрица размером n * m. Сортировать (переставить) строки...

Упорядочить строки матрицы по возрастанию значений самых больших элементов строк
Здравствуйте. Имеется задание: Дано действительную матрицу размером m x n....

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

9
Ree.exe
56 / 56 / 16
Регистрация: 01.08.2011
Сообщений: 141
18.04.2012, 23:38 2
Ну это почти таже самая сортировка, тока тут меняешь не два элемента а всю строку целиком.
0
Katusha11
0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 23
19.04.2012, 00:59  [ТС] 3
Ree.exe, я не очень поняла само задание, на что нужно переделать например матрицу:
1 5 7
1 7 8
5 6 7

Добавлено через 1 час 1 минуту
Скажите пожалуйста, хотя бы, что должно выйти в итоге ? А я уже буду пытаться, что - то делать, а то я пока не могу понять само задание.

Это наглость конечно, но лучше сразу с примером программы)
0
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 10:52 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
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <conio.h>
 
#define N 3
 
int main(void)
{
    int matrix[N][N] = { { 1, 5, 7 },
                         { 1, 7, 8 },
                         { 5, 6, 7 } };
 
    for (int i = 0; i < N; i++)
        for (int k = i+1; k < N; k++)
            if (matrix[k][0] > matrix[i][0])
            {
                int* pv = new int[N];
                for (int m = 0; m < N; m++)
                    pv[m] = matrix[k][m];
 
                for (int n = 0; n < N; n++)
                    matrix[k][n] = matrix[i][n];
 
                for (int q = 0; q < N; q++)
                    matrix[i][q] = pv[q];
            }
 
    for (int z1 = 0; z1 < N; z1++)
    {
        for (int z2 = 0; z2 < N; z2++)
            printf("%d ",matrix[z1][z2]);
        printf("\n");
    }
 
    return 0;
}
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
20.04.2012, 11:02 5
Цитата Сообщение от Katusha11 Посмотреть сообщение
на что нужно переделать например матрицу:
Данную матрицу не нужно переделывать, так как значения первых элементов строк находятся в правильно положении, а вот например если бы было так:
1 5 7
5 6 7
1 7 8

То нам нужно было бы поменять вторую строку с последней, так как 5 > 1.
0
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 11:04 6
Как бы вы не меняли матрицу все равно код выше правильно сортирует любую
последовательность строк матрицы.
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
20.04.2012, 11:40 7
Код может быть и сортирует, но человек не понял задания, в вашем же посте ничего кроме кода нет.
А так сразу же бросилось в глаза - зачем вы создается новый массив?
Все намного проще
C++
1
2
3
4
if ( matrix[k][0] > matrix[i][0] ) {
   for ( int m = 0; m < N; m++ )
      std::swap( matrix[ k ][ m ], matrix[ i ][ m ])
}
ну или в ручную
C++
1
2
3
4
5
6
7
8
9
if ( matrix[k][0] > matrix[i][0] ) {
   int temp = 0;
 
   for ( int m = 0; m < N; m++ ) {
      temp = matrix[ k ][ m ];
      matrix[ k ][ m ] = matrix[ i ][ m ];
      matrix[ i ][ m ] = temp;
   }
}
0
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 14:05 8
Я создаю массив для того чтобы копировать в него целую строку элементов.
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
20.04.2012, 14:30 9
Вот именно, зачем??? При чем у Вас нет ни одного delete []. При количестве перестановок больше 1, память будет выделятся столько же раз, при этом старая останется так же выделенной, откуда следуют утечки памяти. Да и вообще для смены строк не нужно куда то сохранять целую строку, так как мы по сути меняем элементы строк между собой.
0
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 19:08 10
Я понял.
0
20.04.2012, 19:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2012, 19:08

Упорядочить строки матрицы по возрастанию их первых элементов
очень срочно на завтра нужен код этой задачи. &quot; дана матрица размером NxM...

Упорядочить строки матрицы по возрастанию их первых элементов
В работе память для массива должна выделяться динамически. На экран выводить...

Упорядочить строки матрицы по возрастанию их первых элементов
Задана матрица целых чисел. Упорядочить ее строки по возрастанию их первых...


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

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

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