0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 23
1

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

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

Author24 — интернет-сервис помощи студентам
Можете помочь с таким заданием:
Данная целочисленная матрица размером mxn. Нужно разместить строки матрицы по возрастанию значений первых элементов строк.
Вообще не представляю, как это сделать и нужно обязательно без указателей, заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2012, 23:31
Ответы с готовыми решениями:

Упорядочить строки массива по не возрастанию значений первых элементов строк
Составить программу обработки матрицы размерности NxM. Выполнить программу для N=3, M=4. В...

Упорядочить строки матрицы по возрастанию первых элементов строк
from random import random N = int(input("Введите количество строк: ")) M = int(input("Введите...

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

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

9
56 / 56 / 16
Регистрация: 01.08.2011
Сообщений: 141
18.04.2012, 23:38 2
Ну это почти таже самая сортировка, тока тут меняешь не два элемента а всю строку целиком.
0
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
96 / 748 / 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
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
20.04.2012, 11:02 5
Цитата Сообщение от Katusha11 Посмотреть сообщение
на что нужно переделать например матрицу:
Данную матрицу не нужно переделывать, так как значения первых элементов строк находятся в правильно положении, а вот например если бы было так:
1 5 7
5 6 7
1 7 8

То нам нужно было бы поменять вторую строку с последней, так как 5 > 1.
0
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 11:04 6
Как бы вы не меняли матрицу все равно код выше правильно сортирует любую
последовательность строк матрицы.
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
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
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 14:05 8
Я создаю массив для того чтобы копировать в него целую строку элементов.
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
20.04.2012, 14:30 9
Вот именно, зачем??? При чем у Вас нет ни одного delete []. При количестве перестановок больше 1, память будет выделятся столько же раз, при этом старая останется так же выделенной, откуда следуют утечки памяти. Да и вообще для смены строк не нужно куда то сохранять целую строку, так как мы по сути меняем элементы строк между собой.
0
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
20.04.2012, 19:08 10
Я понял.
0
20.04.2012, 19:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2012, 19:08
Помогаю со студенческими работами здесь

Расположите в порядке возрастания элементы строк данной матрицы, после чего расположите строки по возрастанию первых элементов полученных строк
Расположите в порядке возрастания элементы строк данной матрицы, после чего расположите строки по...

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

Упорядочить строки матрицы таким образом, чтобы значения первых элементов строк были упорядочены по возрастанию
Дана действительная матрица размера N × M. Упорядочить строки матрицы таким образом, чтобы значения...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru