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

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

02.05.2018, 18:51. Показов 934. Ответов 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
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <stdlib.h>
 
using namespace std;
 
int main() {
setlocale(LC_ALL, "Russian");
 
void show_arr (int **, int , int );
void show_arr (int *, int );
//--------------------------------------------
int rows, columns;
 
int B[100];
        int i, j, k;
        cout << " Количество строк (0<t < 100) " << endl;
        cin >> rows;
 
        cout << " Количество столбцов в 1 строке (0<t < 100) " << endl;
        B[i] = columns;
        cin >> columns;
 
 
        cout << " Элементы " << endl;
        columns++;
        k = 2;
        int **a = new int *[rows];
        for (int i = 0; i < rows; i++)
        {
            a[i] = new int[columns];
            for (j = 1; j < columns ; j++)
                cin >> a[i][j];
            a[i][0] = columns;
 
            if (rows != (i + 1))
            {
                cout << " Количество столбцов в  строке " << k << " (0<t < 100)" << endl;
                cin >> columns;
                columns++;
                cout << " Элементы " << k << "  stroky " << endl;
                k++;
            }
        }
 
cout << "Матрица " << endl;
        for (i = 0; i < rows; i++)
        {
            for (j = 1; j < a[i][0]; j++)
            {
                if (a[i][j]<0)
                    cout << a[i][j] << " ";
                else
                    cout << " " << a[i][j] << " ";
 
            }
            cout << " " << endl;
        }
 
//--------------------------------------------
// Суммируем элементы в строке.
int *pointer_arr1 = new int [rows];
for(int i = 0; i < rows; i++)
{
    pointer_arr1[i] = 0;
        for(int j = 0; j < columns; j ++)
        {
          if(a[i][j]<=0)  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; // Буферная переменная.
int *ptr_buffer; // Буферный поинтер.
 
int *buffer2;
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;
 
            buffer2 = a[counter1];
            a[counter1] = a[counter2];
            a[counter2] = buffer2;
        }
    }
}
 
cout << "Сумма модулей отриц элементов, расположенная в порядке невозрастания: \n";
show_arr (pointer_arr1, rows);
 
cout << "Измененная матрица: \n";
 
show_arr (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_arr (int **a, int rows, int columns){
 
 
 
 
for (int i=0; i<rows; cout<<"\n", i++)
for (int j=1; 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2018, 18:51
Ответы с готовыми решениями:

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

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

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

9
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
02.05.2018, 19:15
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <random>
 
void fillMatrix( int ** matrix, std::size_t rows, std::size_t cols );
void printMatrix( int ** matrix, std::size_t rows, std::size_t cols );
unsigned int getSumOfRowElements( int * row, std::size_t cols );
void sortMatrix( int ** matrix, std::size_t rows, std::size_t cols );
void swapRowMatrix( int *& firstRow, int *& secondRow, std::size_t cols );
 
int main() {
 
    std::size_t cols = 0, rows = 0;
 
    std::cout << "Please, enter the number of rows and cols: ";
    std::cin >> rows >> cols;
 
    if ( rows == 0 || cols == 0 ) {
 
        std::cerr << "The number of rows or cols cannot be equals to zero\n";
        return 1;
 
    }
 
    int ** matrix = new int*[rows];
 
    for ( std::size_t i = 0; i < rows; ++i ) {
 
        matrix[i] = new int[cols];
 
    }
 
    fillMatrix( matrix, rows, cols );
    printMatrix( matrix, rows, cols );
    sortMatrix( matrix, rows, cols );
    printMatrix( matrix, rows, cols );
 
    for ( std::size_t i = 0; i < rows; ++i ) {
 
        delete[] matrix[i];
 
    }
 
    delete[] matrix;
 
    return 0;
 
}
 
void fillMatrix( int ** matrix, std::size_t rows, std::size_t cols ) {
 
    std::random_device rd;
    std::mt19937 gen( rd( ) );
    std::uniform_int_distribution<int> dist(-50, 50);
 
    for ( std::size_t i = 0; i < rows; ++i ) {
 
        for ( std::size_t j = 0; j < cols; ++j ) {
 
            matrix[i][j] = dist( gen );
 
        }
 
    }
 
}
 
void printMatrix( int ** matrix, std::size_t rows, std::size_t cols ) {
 
    for ( std::size_t i = 0; i < rows; ++i ) {
 
        for ( std::size_t j = 0; j < cols; ++j ) {
 
            std::cout << matrix[i][j] << " ";
 
        }
 
        std::cout << "\n";
 
    }
 
    std::cout << "\n";
 
}
 
unsigned int getSumOfRowElements( int * row, std::size_t cols ) {
 
    unsigned int sum = 0;
 
    for ( std::size_t i = 0; i < cols; ++i ) {
 
        if ( row[i] < 0 ) {
 
            sum += -row[i];
 
        }
 
    }
 
    return sum;
 
}
 
void sortMatrix( int ** matrix, std::size_t rows, std::size_t cols ) {
 
    for ( std::size_t i = 0; i < rows - 1; ++i ) {
 
        for ( std::size_t j = i + 1; j < rows; ++j ) {
 
            if( getSumOfRowElements( matrix[i], cols ) < getSumOfRowElements( matrix[j], cols ) ) {
 
                swapRowMatrix( matrix[i], matrix[j], cols );
 
            }
 
        }
 
    }
 
}
 
void swapRowMatrix( int *& firstRow, int *& secondRow, std::size_t cols ) {
 
    int * temp = firstRow;
    firstRow = secondRow;
    secondRow = temp;
 
    /*int temp = 0;
 
    for ( std::size_t i = 0; i < cols; ++i ) {
 
        temp = firstRow[i];
        firstRow[i] = secondRow[i];
        secondRow[i] = temp;
 
    }*/
 
}
0
0 / 0 / 0
Регистрация: 25.02.2018
Сообщений: 17
02.05.2018, 19:59  [ТС]
не работает
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
02.05.2018, 20:01
Vald000, что не работает?

Добавлено через 1 минуту
Code
1
2
3
4
5
6
7
8
9
10
11
12
Please, enter the number of rows and cols: 5 5
10 -32 39 37 9
-33 11 32 50 45
-5 -40 -20 -14 23
-50 15 -50 -23 -22
45 15 -49 -17 -31
 
-50 15 -50 -23 -22
45 15 -49 -17 -31
-5 -40 -20 -14 23
-33 11 32 50 45
10 -32 39 37 9
0
0 / 0 / 0
Регистрация: 25.02.2018
Сообщений: 17
02.05.2018, 20:14  [ТС]
Смотри во вложениях
Миниатюры
Динамические матрицы: расположить строки в порядке невозрастания сумм модулей их отрицательных элементов  
0
0 / 0 / 0
Регистрация: 25.02.2018
Сообщений: 17
02.05.2018, 20:15  [ТС]
Кампилятор не поддерживает(использую CodeBlocks)
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
02.05.2018, 20:43
Vald000, ну, "не работает" и "компилятор не поддерживает" - совершенно разное. Я полагаю, что Вы просто некомпетентны в том, что делаете. Так же советую рассказать об этом Вашему преподавателю. Чтобы разрешить Вашу проблему, почитайте, как включать поддержку разных стандартов в IDE, которой вы пользуетесь.
0
0 / 0 / 0
Регистрация: 25.02.2018
Сообщений: 17
02.05.2018, 21:01  [ТС]
Извиняюсь , за то , что ввел вас в заблуждение , но и ваша программа не соответствует заданию , ибо количество элементов в строке может быть разное
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
02.05.2018, 21:10
Цитата Сообщение от Vald000 Посмотреть сообщение
количество элементов в строке может быть разное
Совершенно верно. Поэтому-то в ней и фигурируют такие переменные, как cols и rows (строки и столбцы), обозначающие количество столбцов и строк матрицы, соответственно. При входе в программу пользователя просят ввести количество строк и количество столбцов, после чего происходят основные вычисления, поэтому с точки зрения задания, программа соответствует.

Добавлено через 1 минуту
Цитата Сообщение от Vald000 Посмотреть сообщение
Кампилятор не поддерживает(использую CodeBlocks)
Посмотрите внимательно на скриншот, который вы мне показали. Там написано, какой ключ компилятора нужно использовать, чтобы включить поддержку C++11.
0
0 / 0 / 0
Регистрация: 25.02.2018
Сообщений: 17
02.05.2018, 22:08  [ТС]
Вот запуск моей программы , но с некими изменениями, которых в работе быть не должно ( показано , как должно выглядеть)
Миниатюры
Динамические матрицы: расположить строки в порядке невозрастания сумм модулей их отрицательных элементов  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2018, 22:08
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru