Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 07.12.2015
Сообщений: 14
1

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

07.05.2016, 17:05. Просмотров 1008. Ответов 1

Здравствуйте.
Задача: Дана матрица действительных чисел размера n x m. Переформировать матрицу таким образом, чтобы ее строки располагались в порядке невозрастания сумм модулей нечетных элементов строк.
Получается выполнить для матриц с количеством строк или столбцов больше 2 (двух). Матрица 3x2 обрабатывается неправильно, а на матрице 2x3 консоль просто закрывается. Затуп, как я вижу, в трех вложенных циклах "for". Но где - не понимаю.
Буду очень рад как увидеть другую организацию циклов "for", так и просто другое решение, чтобы матрицы 3x2 и 2x3 не глючили.
Спасибо.
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <stdlib.h>
using namespace std;
 
int main() {
setlocale(LC_ALL, "Russian");
 
void show_matrix(int **, int , int );
void show_arr (int *, int );
//--------------------------------------------
int rows, columns;
int **a;
cout << "Введите количество строк: "; cin >> rows; cout << "\n";
cout << "Введите количество столбцов: "; cin >> columns; cout << "\n";
// Выделим память на массив a. Каждый элемент массива - указатель на int.
a = new int *[rows];
// Выделение памяти для каждого элемента a[i]. a[i] адресует columns элементов типа int.
for (int i = 0; i < rows; i++) {a[i] = new int [columns];}
// Ввод матрицы.
cout << "Введите матрицу: \n";
for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < columns; j++)
    {
        cin >> a[i][j];
    }
}
cout << "\nВведенная матрица: \n";
show_matrix(a, rows, columns);
//--------------------------------------------
// Суммируем элементы в строке.
int *pointer_arr1 = new int [rows];
for(int i = 0; i < rows; i++)
{
    pointer_arr1[i] = 0;
        for(int j = 0; j < columns; j += 2)
        {
            pointer_arr1[i] += abs(a[i][j]);
        }
}
cout << "Сумма модулей элементов, стоящих на нечетных позициях в строках: \n";
show_arr (pointer_arr1, rows);
cout << "\n";
 
// Определим буферную матрицу.
int **b;
b = new int *[rows];
for (int i = 0; i < rows; i++) {b[i] = new int [columns];}
 
int buffer = 0; // Буферная переменная.
 
for (int counter1 = 0; counter1 < rows-1; counter1++)
{
    for (int counter2 = counter1+1; counter2 < columns; counter2++)
    {
        if (pointer_arr1[counter1]<pointer_arr1[counter2])
        {
            buffer = pointer_arr1[counter1];
            pointer_arr1[counter1] = pointer_arr1[counter2];
            pointer_arr1[counter2] = buffer;
 
            for (int i = 0; i < columns; i++)
            {
                b[counter1][i] = a[counter1][i];
                a[counter1][i] = a[counter2][i];
                a[counter2][i] = b[counter1][i];
            }
        }
    }
}
 
cout << "Сумма модулей элементов, стоящих на нечетных позициях в строках, расположенная в порядке невозрастания: \n";
show_arr (pointer_arr1, rows);
 
cout << "Измененная матрица: \n";
show_matrix(a, rows, columns);
 
for (int i=0; i<rows; i++)
//освобождение памяти для каждого элемнта a[i]
delete [] a[i];
//освобождение памяти для а
delete []a;
for (int i=0; i<rows; i++)
//освобождение памяти для каждого элемнта b[i]
delete [] b[i];
//освобождение памяти для b
delete [] b;
 
system ("pause");
return 0;
}
 
void show_matrix(int **a, int rows, int columns){
for (int i=0; i<rows; cout<<"\n", i++)
for (int j=0; j<columns; j++)
cout<<a[i][j]<<"\t";
}
 
void show_arr (int *pointer_arr1, int arr_length) {
for (int counter = 0; counter < arr_length; counter++)
{
    cout << pointer_arr1[counter] << "  ";
}
cout << "\n";
}
0
Миниатюры
Расположить строки матрицы в порядке невозрастания сумм модулей нечетных элементов строк  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2016, 17:05
Ответы с готовыми решениями:

Расположить строки матрицы в порядке невозрастания сумм модулей нечетных элементов строк
Дана матрица действительных чисел размера m x n. Переформировать матрицу таким образом, чтобы ее...

Динамические матрицы: расположить строки в порядке невозрастания сумм модулей их отрицательных элементов
Переформировать матрицу таким образом, чтобы её строки располагались в порядке невозрастания сумм...

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

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

1
0 / 0 / 1
Регистрация: 07.12.2015
Сообщений: 14
07.05.2016, 19:36  [ТС] 2
Тема закрыта. Спасибо просмотревшим.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int buffer = 0; // Буферная переменная.
int *ptr_buffer; // Буферный поинтер.
 
for (int counter1 = 0; counter1 < rows-1; counter1++)
{
    for (int counter2 = counter1+1; counter2 < rows; counter2++)
    {
        if (pointer_arr1[counter1]<pointer_arr1[counter2])
        {
            buffer = pointer_arr1[counter1];
            pointer_arr1[counter1] = pointer_arr1[counter2];
            pointer_arr1[counter2] = buffer;
 
            ptr_buffer = a[counter1];
            a[counter1] = a[counter2];
            a[counter2] = ptr_buffer;
        }
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2016, 19:36

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

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

Переставить строки матрицы в порядке невозрастания модулей разностей их максимальных и минимальных элементов
Помогите написать программку на с++ пожалуйста, оч буду благодарен)) Такое вот задание: Составить...

Отсортировать строки матрицы в порядке невозрастания максимальных элементов строк
Дана прямоугольная матрица А. Отсортировать строки матрицы в порядке невозрастания максимальных...

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

Расположить строки матрицы в порядке убывания сумм значений их элементов
Превратить произвольную матрицу XN1 (m * n), расположив ее строки в порядке убывания сумм значений...

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


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

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

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