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

Найти минимальный элемент матрицы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
17.10.2010, 01:15     Найти минимальный элемент матрицы #1
Плиз, помогите, учить некогда, а надо в понедельник сдать рабочую программу, темы пропустил. Короче: есть квадратный массив, вводится программистом, в каждой строке надо найти минимальный елемент, потом из них самый минимальный, также и максимальный, а потом поменять местами строки с мин и макс, если номера строк совпадают, вывести номер строки. Заранее благодарен, оч. надо, я и не лох в С++ но эту тему не учили, а лаба в понедельник должна быть сдана.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 01:15     Найти минимальный элемент матрицы
Посмотрите здесь:

C++ Найти минимальный элемент на главной диагонали матрицы
C++ Найти минимальный элемент каждого столбца матрицы
В каждой строке матрицы найти минимальный элемент C++
Решить уравнение p*x2+d*x+r=0, где p - минимальный элемент матрицы A; d –минимальный элемент матрицы B; r - минимальный элемент матрицы C. C++
Как найти минимальный элемент матрицы? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.10.2010, 01:18     Найти минимальный элемент матрицы #2
Цитата Сообщение от vaselo Посмотреть сообщение
квадратный массив
То есть квадратная матрица?
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
17.10.2010, 01:44  [ТС]     Найти минимальный элемент матрицы #3
Цитата Сообщение от MILAN Посмотреть сообщение
То есть квадратная матрица?
да,в литературе и преподы называют и так и так

Добавлено через 19 минут
Цитата Сообщение от vaselo Посмотреть сообщение
да,в литературе и преподы называют и так и так
да, тупонул я, МАТРИЦА всё-же, простите..
iApple
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 11
17.10.2010, 04:01     Найти минимальный элемент матрицы #4
Цитата Сообщение от vaselo Посмотреть сообщение
Плиз, помогите, учить некогда, а надо в понедельник сдать рабочую программу, темы пропустил. Короче: есть квадратный массив, вводится программистом, в каждой строке надо найти минимальный елемент, потом из них самый минимальный, также и максимальный, а потом поменять местами строки с мин и макс, если номера строк совпадают, вывести номер строки. Заранее благодарен, оч. надо, я и не лох в С++ но эту тему не учили, а лаба в понедельник должна быть сдана.

Если я правильно понял: находим строку с МИНИМАЛЬНЫМ элементом и вторую с МАКСИМАЛЬНЫМ. Поменять их местами. Если оба числа(и мин и макс) в одной строке, вывести номер строки.

Я всего-лишь переспросил)
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
17.10.2010, 10:10  [ТС]     Найти минимальный элемент матрицы #5
Да, все верно, но особенность программы в том, што надо искать мин и макс элемент по строкам, а не по всему элементу. Может надо написать подпрограмму? И потом ею все строчки сканировать?

Добавлено через 43 минуты
Цитата Сообщение от vaselo Посмотреть сообщение
а не по всему элементу.
не по всей матрице
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.10.2010, 16:00     Найти минимальный элемент матрицы #6
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
#include <iostream>
#include <ctime>
 
using std::cout;
using std::cin;
using std::endl;
int minimum, maximum,num_max,num_min;
int** input(int **arr, int rows, int cols)
 {
     for(int i=0; i<rows; i++)
     {
         arr[i]=new int[cols];
         for(int j=0; j<cols; j++)
         {
             arr[i][j]=rand()%9;
             //cout<<"arr["<<i<<"]["<<cols<<"]= ";
             //cin>>arr[i][j];
         }
     }
   return arr;
 } 
int min_max(int **arr, int rows, int cols)
{
    int *min, *max;
    min = new int[cols];
    max = new int[cols];
    for(int i=0; i<rows; i++)
    {
        minimum = arr[i][0];
        maximum = arr[i][0];
        for(int j=0; j<cols; j++)
         {
            if (arr[i][j]<minimum)
             {
                minimum=arr[i][j];
             }
            if (arr[i][j]>maximum)
             {
                maximum=arr[i][j];
             } 
         }
        max[i]=maximum;
        min[i]=minimum;
        
     }
    minimum = min[0];
    maximum = max[0];
    for(int i=0; i<cols; i++)
    {
        if (min[i]<minimum)
          {
            minimum = min[i];
            num_min=i;
          } 
        if (max[i]>maximum)
          {
            maximum = max[i];
            num_max=i;
          }
    }
    delete [] min;
    delete [] max;
    return 0;
 
}
 
int main()
{
    srand((unsigned)time(NULL));
    setlocale(LC_ALL,"Russian");
    int **arr;
    int rows,cols;
    cout<<"Введите количество строк: ";
     cin>>rows;
    cout<<endl;
    cout<<"Введите количество столбцов: ";
     cin>>cols;
    arr = new int*[rows];
    input(arr, rows, cols);
    cout<<endl;
    cout<<"Начальная матрица: "<<endl;
    for(int i=0; i<rows; i++)
     {
        for(int j=0; j<cols; j++)
             {
                cout<<arr[i][j]<<"  ";
             }
        cout<<endl;
     }
    min_max(arr, rows, cols);
    cout<<"min "<<minimum<<" is "<<num_min<<endl;
    cout<<"max "<<maximum<<" is "<<num_max<<endl;
    cout<<"Конечная матрица: "<<endl;
     for(int i=0; i<rows; i++)
     {
        if(i==num_min)
        {
            for(int j=0; j<cols; j++)
             {
                cout<<arr[num_max][j]<<"  ";
             }
        }
        if(i==num_max)
        {
            for(int j=0; j<cols; j++)
             {
                cout<<arr[num_min][j]<<"  ";
             }
        }
        if(i!=num_max&&i!=num_min)
        {
           for(int j=0; j<cols; j++)
            {
             cout<<arr[i][j]<<"  ";
            }
        }
        cout<<endl;
     }
     for(int i=0; i<rows; i++)
       delete arr[i];
        delete [] arr;
  return 0;
}
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
17.10.2010, 17:00     Найти минимальный элемент матрицы #7
MILAN, тогда уж:

C++
1
2
3
4
5
6
7
8
9
min = new int[rows]; //25 строка
max = new int[rows]; //26
//.....
for(int i=0; i<rows; i++) //48
//.....
arr = new int *[rows];   // 78
for(i=0; i<rows; i++){
     arr[i] = new int [cols];
}
Вывод конечной матрицы можно малость упростить хотя бы так:
C++
1
2
3
4
5
6
if(i==num_min)
//.....
else if(i==num_max)
//.....
else
//.....
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
17.10.2010, 19:29  [ТС]     Найти минимальный элемент матрицы #8
Всем спасибо, тема закрыта!

Добавлено через 19 минут
MILAN, стыдно за то, что надоедаю, мог бы ты прокомментировать некоторые строки. Еще раз спасибо.

Добавлено через 1 минуту
arr[i][j]=rand()%9;
//cout<<"arr["<<i<<"]["<<cols<<"]= ";
//cin>>arr[i][j];


delete [] min;
delete [] max;
return 0;




cout<<"Конечная матрица: "<<endl;
for(int i=0; i<rows; i++)
{
if(i==num_min)
{
for(int j=0; j<cols; j++)
{
cout<<arr[num_max][j]<<" ";
}
}
if(i==num_max)
{
for(int j=0; j<cols; j++)
{
cout<<arr[num_min][j]<<" ";
}
}
if(i!=num_max&&i!=num_min)
{
for(int j=0; j<cols; j++)
{
cout<<arr[i][j]<<" ";
}
}
cout<<endl;
}
for(int i=0; i<rows; i++)
delete arr[i];
delete [] arr;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2010, 20:27     Найти минимальный элемент матрицы
Еще ссылки по теме:

C++ Найти минимальный отрицательный элемент квадратной матрицы
Найти минимальный элемент в заштрихованной области матрицы C++

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

Или воспользуйтесь поиском по форуму:
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.10.2010, 20:27     Найти минимальный элемент матрицы #9
Цитата Сообщение от vaselo Посмотреть сообщение
есть квадратный массив, вводится программистом
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
#include <iostream>
#include <ctime>
 
using std::cout;
using std::cin;
using std::endl;
int minimum, maximum,num_max,num_min;
int** input(int **arr, int rows, int cols)
 {
         for(int i=0; i<rows; i++)
         {
                 arr[i]=new int[cols];
                 for(int j=0; j<cols; j++)
                 {
                         
                         cout<<"arr["<<i<<"]["<<cols<<"]= ";
                         cin>>arr[i][j];
                 }
         }
   return arr;
 } 
int min_max(int **arr, int rows, int cols)
{
        int *min, *max;
        min = new int[cols];
        max = new int[cols];
        for(int i=0; i<rows; i++)
        {
                minimum = arr[i][0];
                maximum = arr[i][0];
                for(int j=0; j<cols; j++)
                 {
            if (arr[i][j]<minimum)
                         {
                                minimum=arr[i][j];
                         }
                        if (arr[i][j]>maximum)
                         {
                                maximum=arr[i][j];
                         } 
                 }
                max[i]=maximum;
                min[i]=minimum;
                
         }
        minimum = min[0];
        maximum = max[0];
        for(int i=0; i<cols; i++)
        {
                if (min[i]<minimum)
                  {
                        minimum = min[i];
                        num_min=i;
                  } 
        if (max[i]>maximum)
                  {
                        maximum = max[i];
                        num_max=i;
                  }
        }
        delete [] min;
    delete [] max;
        return 0;
 
}
 
int main()
{
        srand((unsigned)time(NULL));
        setlocale(LC_ALL,"Russian");
        int **arr;
        int rows,cols;
        cout<<"Введите количество строк: ";
         cin>>rows;
    cout<<endl;
        cout<<"Введите количество столбцов: ";
         cin>>cols;
        arr = new int*[rows];
        input(arr, rows, cols);
        cout<<endl;
        cout<<"Начальная матрица: "<<endl;
        for(int i=0; i<rows; i++)
         {
        for(int j=0; j<cols; j++)
                     {
                            cout<<arr[i][j]<<"  ";
                         }
                cout<<endl;
         }
        min_max(arr, rows, cols);
        cout<<"min "<<minimum<<" is "<<num_min<<endl;
        cout<<"max "<<maximum<<" is "<<num_max<<endl;
        cout<<"Конечная матрица: "<<endl;
     for(int i=0; i<rows; i++)
         {
        if(i==num_min)
                {
                        for(int j=0; j<cols; j++)
                     {
                            cout<<arr[num_max][j]<<"  ";
                         }
                }
                if(i==num_max)
                {
                        for(int j=0; j<cols; j++)
                     {
                            cout<<arr[num_min][j]<<"  ";
                         }
                }
                if(i!=num_max&&i!=num_min)
                {
                   for(int j=0; j<cols; j++)
                    {
                         cout<<arr[i][j]<<"  ";
                        }
                }
                cout<<endl;
         }
     for(int i=0; i<rows; i++)
           delete arr[i];
        delete [] arr;
  return 0;
}
Добавлено через 6 минут
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
arr[i][j]=rand()%9; // заполнение елементов массива случайными числами 
//cout<<"arr["<<i<<"]["<<cols<<"]= ";
//cin>>arr[i][j];
 
 
delete [] min; // очистка памяти
delete [] max;
return 0;
 
 
 
 
cout<<"Конечная матрица: "<<endl; 
for(int i=0; i<rows; i++)    
{
if(i==num_min) // если встречается строка с минимальным елементом
{
for(int j=0; j<cols; j++) // заменяем ее строкой с максимальным елементом 
{
cout<<arr[num_max][j]<<" ";
}
}
if(i==num_max) // если встречается строка с максимальным елементом
{
for(int j=0; j<cols; j++) // заменяем ее строкой с минимальным елементом
{
cout<<arr[num_min][j]<<" ";
}
}
if(i!=num_max&&i!=num_min) // если встречается другая строка  
{
for(int j=0; j<cols; j++) // выводим ее
 
cout<<arr[i][j]<<" ";
}
}
cout<<endl;
}
for(int i=0; i<rows; i++) // удаляем массивы максимальных и минимальных елементов
delete arr[i];
delete [] arr;
Yandex
Объявления
17.10.2010, 20:27     Найти минимальный элемент матрицы
Ответ Создать тему
Опции темы

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