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

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

Войти
Регистрация
Восстановить пароль
 
jon_illien
3 / 3 / 1
Регистрация: 14.08.2012
Сообщений: 78
#1

Заполнение главной диагонали матрицы максимальными элементами - C++

24.09.2012, 17:57. Просмотров 837. Ответов 5
Метки нет (Все метки)

спасибо, что откликнулись. нужно решить такую задачу:

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <class TYPE> void Func(TYPE x[][N], int M)
{
    int max, imax, jmax;
 
    for(int k=0; k<M; k++)
    {
        imax = 0; jmax = 0;
 
        for(int i=0; i<M; i++)
        {
            for(int j=1; j<N; j++)
            {
                if(x[i][j] > x[imax][jmax] && (i != k && j != k))
                    x[imax][jmax] = x[i][j];
            }
        }
        swap(x[k][k], x[imax][jmax]);
    }
}
Добавлено через 1 час 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
    int max, imax, jmax;
 
    for(int k=0; k<N; k++)
    {
        imax = 0; jmax = 0;
 
        for(int i=0; i<N; i++)
        {
            for(int j=1; j<N; j++)
            {
                if(x[i][j] > x[imax][jmax] && (i != k && j != k))
                {
                    imax = i;
                    jmax = j;
                    max = x[i][j];
                }
            }
        }
        swap(x[k][k], x[imax][jmax]);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2012, 17:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнение главной диагонали матрицы максимальными элементами (C++):

Матрица. Поменять местами элементы главной диагонали максимальными элементами ряда. - C++
Матрица. Поменять местами элементы главной диагонали максимальными элементами ряда. Матр, заполняеться рандомом, заранее спасибо! ...

C++ Двумерные массивы(матрицы),работа с элементами главной диагонали - C++
Уважаемые коллеги, прошу помощи в решении парочки задачек,уж мозг в Си не &quot;варит&quot;,не клеится с его структурой... 1.В каждой строке...

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

Вывести вектор, образуемый элементами главной диагонали матрицы, и результат умножения указанного вектора на заданную матрицу - C++
Первую часть решила кое как, как записать числа из главной диагонали в отдельный массив и перемножить матрицу на матрицу? #include...

Отсортировать диагонали матрицы,расположенные выше главной, по убыванию элементов, а диагонали матрицы, расположенные ниже главной, по возрастанию - C++
дана матрица размерностью nxn, содержащая целые числа. Отсортировать диагонали матрицы,расположенные выше главной, по убыванию элементов, а...

Обменять элементы массива на главной диагонали с элементами на побочной диагонали - C++
Всем привет. Дан двумерный массив размерностью 5х5, заполненный случайными числами из диапазона от 0 до 100. Обменять местами...

5
-=ЮрА=-
Заблокирован
Автор FAQ
24.09.2012, 21:40 #2
Цитата Сообщение от jon_illien Посмотреть сообщение
Путем перестановки элементов добиться того, чтобы ее максимальный элемент находился в левом верхнем углу (0, 0), следующий по величине – в позиции (1, 1), следующий по величине – в позиции (2, 2) и т.д., заполнив таким образом всю главную диагональ.
- лови
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
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
 
template <class T>
void Func(T ** arr, int size);
 
int main()
{
    int i, j;//Счётчики
    int m      = 0;//Будет содержать размерность матрицы
    int ** arr = 0;//Указатель на матрицу
    cout<<"Enter size of matrix : ";cin>>m;
    srand(time(0));//Устанавливаем нач значение в генераторе случ чисел
    arr = new int *[m];//Выделили память под указатели на строки матрицы
    cout<<"\tInput array\n";
    for(i = 0; i < m; i++)
    {
        arr[i] = new int[m];////Выделили память под элементы i-й строки матрицы
        for(j = 0; j < m; j++)
            cout<<setw(3)<<(arr[i][j] = rand()%(m*m))<<" ";
        cout<<endl;
    }
    Func(arr, m);//Преобразуем массив
    cout<<"\tTransformed array\n";
    for(i = 0; i < m; i++)
    {
        for(j = 0; j < m; j++)
            cout<<setw(3)<<arr[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}
 
template <class T>
void Func(T ** arr, int size)
{
    int i, j, k;
    int imax = 0;
    int jmax = 0;
    for(k = 0; k < size; k++)
    {
        imax = (jmax = k);
        for(i = 0; i < size; i++)
        for(j = 0; j < size; j++)
        {
            
            if(i == j && i <= k) 
                continue;//Не рассматриваем предыдущие элементы на главной диагонали
            else
            {
                if(arr[imax][jmax] < arr[i][j])
                {
                    imax = i;
                    jmax = j;
                }
            }
        }
        swap(arr[k][k], arr[imax][jmax]);
    }
}
Проверка http://codepad.org/YBHOFxtK
1
Миниатюры
Заполнение главной диагонали матрицы максимальными элементами  
-=ЮрА=-
24.09.2012, 21:42
  #3

Не по теме:

Цитата Сообщение от jon_illien Посмотреть сообщение
(i != k && j != k)
- да я тоже сначала такое условие хотел, но это лучше

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(i == j && i <= k)
* * * * * * * * continue;//Не рассматриваем предыдущие элементы на главной диагонали
* * * * * * else

0
jon_illien
3 / 3 / 1
Регистрация: 14.08.2012
Сообщений: 78
24.09.2012, 22:00  [ТС] #4
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

- да я тоже сначала такое условие хотел, но это лучше

блин!) а, можно это адаптировать к моему коду, помоги plz)
0
-=ЮрА=-
Заблокирован
Автор FAQ
24.09.2012, 22:09 #5
Цитата Сообщение от jon_illien Посмотреть сообщение
блин!) а, можно это адаптировать к моему коду, помоги plz)
- так моя ж функция есть

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
template <class T>
void Func(T ** arr, int size)
- тот же template просто массив не статический

Цитата Сообщение от jon_illien Посмотреть сообщение
(TYPE x[][N]
а динамический. И зачем тебе M и N если главная диагональ есть лишь у квадратной матрицы, оттого у меня всего 1 размерность
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
int m * * *= 0;//Будет содержать размерность матрицы
- матрица то квадратная. Ну вставь моё условие уже накрайняк
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(i == j && i <= k)
* * * * * * * * continue;//Не рассматриваем предыдущие элементы на главной диагонали
* * * * * * else
Не вижу проблемм если честно. Пиши!
1
jon_illien
3 / 3 / 1
Регистрация: 14.08.2012
Сообщений: 78
24.09.2012, 22:59  [ТС] #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- так моя ж функция есть

- тот же template просто массив не статический

а динамический. И зачем тебе M и N если главная диагональ есть лишь у квадратной матрицы, оттого у меня всего 1 размерность
- матрица то квадратная. Ну вставь моё условие уже накрайняк

Не вижу проблемм если честно. Пиши!
я сегодня какой-то слепой, огромное спасибо за помощь.
0
24.09.2012, 22:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2012, 22:59
Привет! Вот еще темы с ответами:

Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали - C++
Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали.

Вычислить сумму элементов матрицы над главной диагональю под главной диагональю и на главной диагонали - C++
Даны матрицы А(4,3) и В(3,5). Для каждой матрицы вычислить сумму элементов над главной диагональю под главной диагональю и на главной...

Заменить элементы главной диагонали элементами целого типа - C++
Найдите произведение всех положительных элементов матрицы размером 4x4, состоящей из элементов целого типа и замените им элементы главной...

Найти сумму каждой диагонали матрицы выше главной диагонали - C++
Дана матрица n*m, найти сумму каждой диагонали отдельно, выше главной диагонали. Не могу понять задачу помогите пожалуйста.


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

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

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