0 / 0 / 0
Регистрация: 03.11.2014
Сообщений: 23
1

Объясните принцип действия программы, меняющей местами строки матрицы с наибольшим и наименьшим элементами

15.11.2014, 13:20. Показов 1089. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Задание звучит так:
В произвольной матрице A [ N ][ M ] поменять местами строку, содержащую минимальный элемент матрицы, со строкой, содержащей максимальный элемент.

Нашел программу, но как именно она это делает я не пойму. Помогите разобраться в коде. Заранее спасибо!

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
#include <iostream>
#include <ctime>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"rus");
    int mass[3][3];
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            mass[i][j]=rand()%10;
    cout<<"Исходный массив: "<<endl;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
            cout<<mass[i][j]<<" ";
        cout<<endl;
    }
    int max,rowMax=0;
    int min,rowMin=0;
    max=mass[0][0];
    min=mass[0][0];
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
        {
            if(max<mass[i][j])
            {
                max=mass[i][j];
                rowMax=i;
            }
            if(min>mass[i][j])
            {
                min=mass[i][j];
                rowMin=i;
            }
        }
    int temp;
    for (int i = 0; i < 3; i++)
    {
        temp=mass[rowMax][i];
        mass[rowMax][i]=mass[rowMin][i];
        mass[rowMin][i]=temp;
    }
    cout<<"Массив после замены строк: "<<endl;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
            cout<<mass[i][j]<<" ";
        cout<<endl;
    }
    getch();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2014, 13:20
Ответы с готовыми решениями:

Найдите скалярное произведение строки с наибольшим элементом матрицы и столбца с наименьшим элементом матрицы
Пусть дана истинная матрица размером N × N, все элементы которой различны. Найдите скалярное...

Поменять местами строки матрицы с наибольшим и наименьшим элементами
2. Дано натуральное число m, матрица A. Поменять местами строки с наибольшим и наименьшим...

Поменять местами в матрице строки с наименьшим и наибольшим элементами
Дана матрица целых чисел А (n×n). Поменять в ней местами строки с наименьшим и наибольшим...

В массиве целых чисел поменять местами строки с наибольшим и наименьшим элементами
7. В массиве целых чисел поменять местами строки с наибольшим и наименьшим элементами. п.с....

2
Модератор
Эксперт С++
13409 / 10519 / 6285
Регистрация: 18.12.2011
Сообщений: 28,086
15.11.2014, 13:57 2
C++
1
2
3
4
5
6
for (int i = 0; i < 3; i++)  // для каждого столбца
{ 
    temp=mass[rowMax][i];   // запомнили, что стояло в строке rowMax в i столбце
    mass[rowMax][i]=mass[rowMin][i]; // перенесли из строки rowMin в rowMax в i столбце 
    mass[rowMin][i]=temp;   // перенесли из temp в rowMin в i столбце 
}
1
66 / 63 / 63
Регистрация: 15.12.2010
Сообщений: 150
15.11.2014, 14:02 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
#include <iostream>
#include <ctime>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"rus");
    int mass[3][3];
    for (int i = 0; i < 3; i++)//заполняем
        for (int j = 0; j < 3; j++)//массив случайными числами
            mass[i][j]=rand()%10;//и
    cout<<"Исходный массив: "<<endl;//выводим
    for (int i = 0; i < 3; i++)//его
    {
        for (int j = 0; j < 3; j++)//на экран
            cout<<mass[i][j]<<" ";
        cout<<endl;
    }
    int max,rowMax=0;
    int min,rowMin=0;
    max=mass[0][0];
    min=mass[0][0];
    for (int i = 0; i < 3; i++)//находим   
        for (int j = 0; j < 3; j++)//максимальный
        {
            if(max<mass[i][j])//и минимальный
            {
                max=mass[i][j];// элементы
                rowMax=i;
            }
            if(min>mass[i][j])// и запоминаем
            {
                min=mass[i][j];// номера их строк
                rowMin=i;
            }
        }
//далее поэлементно меняем местами строки
    int temp;
    for (int i = 0; i < 3; i++)
    {
        temp=mass[rowMax][i];
        mass[rowMax][i]=mass[rowMin][i];
        mass[rowMin][i]=temp;
    }
//выводим получившийся массив
    cout<<"Массив после замены строк: "<<endl;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
            cout<<mass[i][j]<<" ";
        cout<<endl;
    }
    getch();
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2014, 14:02
Помогаю со студенческими работами здесь

Поменять строки матрицы с наибольшим и наименьшим элементами между собой
Дана матрица размером NxM.Поменяйте строки с наибольшим и наименьшим элементами этой матрицы между...

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

Поменяйте строки с наибольшим и наименьшим элементами этой матрицы между собой
Дана матрица размером NxM.Поменяйте строки с наибольшим и наименьшим элементами этой матрицы между...

Поменять местами строки матрицы с наибольшим и с наименьшим значением
Есть задание: Задан двухмерный массив вещественных чисел размерности 3х3. Найти номер строки и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru