Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Katusha11
0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 23
#1

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

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

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

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

Упорядочить строки массива T(9,7) по возрастанию первых элементов строк. Массив ввести из файла - C++
Массив, довольно прост, но мой уровень, пока только "конвертер величин" Сам массив: 1 1 1 1 1 2 3 5 6 9 7 4 5 6 3 2 3 6 4 4 7 ...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
18.04.2012, 23:38 #2
Ну это почти таже самая сортировка, тока тут меняешь не два элемента а всю строку целиком.
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 минуту
Скажите пожалуйста, хотя бы, что должно выйти в итоге ? А я уже буду пытаться, что - то делать, а то я пока не могу понять само задание.

Это наглость конечно, но лучше сразу с примером программы)
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 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;
}
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
20.04.2012, 11:02 #5
Цитата Сообщение от Katusha11 Посмотреть сообщение
на что нужно переделать например матрицу:
Данную матрицу не нужно переделывать, так как значения первых элементов строк находятся в правильно положении, а вот например если бы было так:
1 5 7
5 6 7
1 7 8

То нам нужно было бы поменять вторую строку с последней, так как 5 > 1.
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 11:04 #6
Как бы вы не меняли матрицу все равно код выше правильно сортирует любую
последовательность строк матрицы.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 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;
   }
}
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 14:05 #8
Я создаю массив для того чтобы копировать в него целую строку элементов.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
20.04.2012, 14:30 #9
Вот именно, зачем??? При чем у Вас нет ни одного delete []. При количестве перестановок больше 1, память будет выделятся столько же раз, при этом старая останется так же выделенной, откуда следуют утечки памяти. Да и вообще для смены строк не нужно куда то сохранять целую строку, так как мы по сути меняем элементы строк между собой.
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 19:08 #10
Я понял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2012, 19:08
Привет! Вот еще темы с ответами:

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

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

Упорядочить элементы строк матрицы по возрастанию, а сами строки по возрастанию суммы элементов - C++
Дана матрица Х. Упорядочить элементы строк матрицы по возрастанию, а сами строки по возрастанию суммы элементов строк (использовать...

Упорядочить строки матрицы по возрастанию значений их наибольших элементов - C++
Задание: Дана матрица целых чисел. Упорядочить ее строки по возрастанию значений их наибольших элементов. Я всё реализовал, кроме...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.04.2012, 19:08
Ответ Создать тему
Опции темы

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