С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 13
1

Перестановкой элементов матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу

13.12.2017, 15:57. Показов 4070. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Путем перестановки элементов квадратной матрицы добиться того,чтобы ее макс элемент находился в левом верхнем углу,следующий по величине- в позиции (2 2), следующий по величине - в позиции (3 3) и т.д.,заполнив таким образом всю главную диагональ.

Вот у меня есть код и он вроде рабочий даже, но мне сказали упростить сортировку.
Я даже не знаю как. может кто-нибудь помочь пожалуйста.

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
#include <iostream>
#include <iomanip>
#include<ctime>
#include<cstdlib>
using namespace std;
 
int main()
{
    setlocale(0, "");
    int n,i,j;
    cout << "Введите размер массива: ";
    cin >> n;
    srand(time(0));
    // динамическое создание двумерного массива
    double **arr = new double* [n];
    for ( i = 0; i < n; i++)
        arr[i] = new double[n];
        
//Заполнение
    for ( i = 0; i < n; i++)
    {
        for ( j = 0; j < n; j++)
        {
            arr[i][j] = double(rand() % 20001) / 100 - 100;
        }
    }
 
    //Вывод
    cout << "Исходный массив:" << endl;
    for ( i = 0; i < n; i++)
    {
        cout << "|";
        for ( j = 0; j < n; j++)
            cout << setprecision(3) << setw(6) << arr[i][j] << " |";
        cout << endl;
    }
 
    //Сортировка
    double max;
    int i_max, j_max;
    for (int i = 0; i < n; ++i)   
    {
        for (int j = 0; j < n; ++j)
        {
            if (((!i) && (!j)) || (arr[i][j] > max))
            {
                max = arr[i][j];
                i_max = i;
                j_max = j;
            }
        }
    }
    arr[i_max][j_max] = arr[0][0];
    arr[0][0] = max;
    for (int count = 1; count < n; ++count)
    {
        max = arr[0][1];
        for (int i = 0; i < n; ++i)
            for (int j = 0; j < n; ++j)
                if (((i != j) || ((i >= count) && (j >= count))) && (arr[i][j] > max))
                {
                    max = arr[i][j];
                    i_max = i;
                    j_max = j;
                }
        arr[i_max][j_max] = arr[count][count];
        arr[count][count] = max;
    }
 
    cout << "Новый массив:" << endl;
    {
        for (int i = 0; i < n; i++)  //Вывод массива
        {
            cout << "|";
            for (int j = 0; j < n; j++)
            {
                cout << setprecision(3) << setw(6) << arr[i][j] << "|";
            }
            cout << endl;
        }
        cout << endl;
    }
 
    //подсчет строк
    for (int i = 0; i < n; ++i)
    {
        int count = 0;
        for (int j = 0; j < n; ++j)
            if (arr[i][j] < 0)
                ++count;
        if (count == n)
        {
            cout << "Линия #" << i + 1 << " не имеет положительных чисел\n";
            system("pause");
            return 0;
        }
    }
    cout << "Все линии имеют положительные числа\n";
 
    for (int i = 0; i < n; i++)
        delete[]arr[i];
 
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2017, 15:57
Ответы с готовыми решениями:

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

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

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

Добиться того, чтобы наибольший элемент данной матрицы оказался в верхнем левом углу
Дана вещественная матрица размером N x M . Переставляя ее строки и столбцы, добиться того,...

2
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
13.12.2017, 16:31 2
меньше копипастить надо! Просто удали 41-52
0
0 / 0 / 0
Регистрация: 15.12.2015
Сообщений: 13
13.12.2017, 18:26  [ТС] 3
Пишет, что i_max, j_max, max не инициализированы. И если я правильно понимаю, то i_max и j_max можно присвоить 0, но что сделать с max?
0
13.12.2017, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2017, 18:26
Помогаю со студенческими работами здесь

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

Переставляя строки и столбцы матрицы, добиться, чтобы наибольший элемент оказался в верхнем левом углу
Дана вещественная матрица A размером 7*4. Переставляя ее строки и столбцы,добиться того,чтобы...

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

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


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

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