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

Поменять местами максимальный и минимальный элементы матрицы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
VladosLancer
1 / 1 / 0
Регистрация: 03.10.2011
Сообщений: 96
03.10.2012, 23:00     Поменять местами максимальный и минимальный элементы матрицы #1
Здравствуйте. Помогите, пожалуйста, написать следующую программу: Дана матрица порядка n. Поменять местами максимальный и минимальный элементы относительно главной диагонали, т.е. сначала нужно найти минимальный элемент снизу относительно главной диагонали, потом найти максимальный элемент сверху относительно главной диагонали, а потом их поменять местами. Например, если нам дана матрица
1 3 6 8
9 12 7 10
5 8 9 11
15 86 92 10
то местами нужно поменять цифры 5 и 11 и получится матрица:
1 3 6 8
9 12 7 10
11 8 9 5
15 86 92 10
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2012, 23:00     Поменять местами максимальный и минимальный элементы матрицы
Посмотрите здесь:

C++ Поменять местами максимальный и минимальный элементы
Поменять местами минимальный и максимальный элементы массива C++
Файл: Поменять местами минимальный и максимальный элементы. C++
Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом C++
C++ Поменять местами минимальный и максимальный элементы массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.10.2012, 00:09     Поменять местами максимальный и минимальный элементы матрицы #2
Если матрица a[][] размерностью n*n уже есть, то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int i_min=1, j_min=0, i_max=0, j_max=1, i, j;
for(i=0; i<n-1; i++)
    for(j=i+1; j<n; j++)
        if(a[i][j]>a[i_max][j_max])
        {
            i_max=i; j_max=j;
        }
for(i=2; i<n; i++)
    for(j=0; j<i; j++)
        if(a[i][j]<a[i_min][j_min])
        {
            i_min=i; j_min=j;
        }
int t=a[i_min][j_min]; a[i_min][j_min]=a[i_max][j_max]; a[i_max][j_max]=t;
// в этом месте матрица a[][] уже преобразована
VladosLancer
1 / 1 / 0
Регистрация: 03.10.2011
Сообщений: 96
04.10.2012, 00:20  [ТС]     Поменять местами максимальный и минимальный элементы матрицы #3
Матрица квадратная. А можно полностью код? Размерность и матрицу нужно вводить с клавиатуры
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
04.10.2012, 00:27     Поменять местами максимальный и минимальный элементы матрицы #4
Цитата Сообщение от VladosLancer Посмотреть сообщение
Матрица квадратная
я догадался.
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
#include <iostream>
using namespace std;
 
int main()
{
    int i_min=1, j_min=0, i_max=0, j_max=1, i, j, a[100][100], n;
    cout<<"n= "; cin>>n;
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
        {
            cout<<"["<<i<<"]["<<j<<"]= ";
            cin>>a[i][j];
        }
    cout<<"Ishodn matr:"<<endl;
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
    for(i=0; i<n-1; i++)
        for(j=i+1; j<n; j++)
            if(a[i][j]>a[i_max][j_max])
            {
                i_max=i; j_max=j;
            }
    for(i=2; i<n; i++)
        for(j=0; j<i; j++)
            if(a[i][j]<a[i_min][j_min])
            {
                i_min=i; j_min=j;
            }
    int t=a[i_min][j_min]; a[i_min][j_min]=a[i_max][j_max]; a[i_max][j_max]=t;
// в этом месте матрица a[][] уже преобразована
    cout<<"Poluch matr:"<<endl;
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}
Yandex
Объявления
04.10.2012, 00:27     Поменять местами максимальный и минимальный элементы матрицы
Ответ Создать тему
Опции темы

Текущее время: 23:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru