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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
#1

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

17.10.2010, 01:15. Просмотров 1745. Ответов 8
Метки нет (Все метки)

Плиз, помогите, учить некогда, а надо в понедельник сдать рабочую программу, темы пропустил. Короче: есть квадратный массив, вводится программистом, в каждой строке надо найти минимальный елемент, потом из них самый минимальный, также и максимальный, а потом поменять местами строки с мин и макс, если номера строк совпадают, вывести номер строки. Заранее благодарен, оч. надо, я и не лох в С++ но эту тему не учили, а лаба в понедельник должна быть сдана.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 01:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти минимальный элемент матрицы (C++):

Решить уравнение p*x2+d*x+r=0, где p - минимальный элемент матрицы A; d –минимальный элемент матрицы B; r - минимальный элемент матрицы C. - C++
Заданы три матрицы A, B, C. Решить уравнение p*x2+d*x+r=0, где p - минимальный элемент матрицы A; d –минимальный элемент матрицы B; r -...

Найти минимальный элемент каждой строки и максимальный элемент каждого столбца матрицы - C++
как найти минимальный элемент каждой строки и максимальный элемент каждого столбца матрицы на с++ Добавлено через 6 минут ...

Найти минимальный элемент матрицы - C++
Дана матрица размером 4 на 3. Найти минимальный элемент матрицы. (Элементы матрицы не рандомные ,а заранее заданные ,числа любые....

Найти минимальный элемент матрицы - C++
Дана квадратная матрица А порядку n. Составить программу, которая находит минимальный элемент и все элементы, расположенные в одной строке...

Найти минимальный элемент матрицы - C++
Здравствуйте! Помогите пожалуйста решить одну задачу?) Нужно найти минимальный элемент матрицы, а потом в строке где есть min найти...

Как найти минимальный элемент матрицы? - C++
Подскажите пожалуйста, как научить данную программу, которая умножает 2 введенные с клавиатуры матрицы, находить и выводить на экран...

8
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.10.2010, 01:18 #2
Цитата Сообщение от vaselo Посмотреть сообщение
квадратный массив
То есть квадратная матрица?
0
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
17.10.2010, 01:44  [ТС] #3
Цитата Сообщение от MILAN Посмотреть сообщение
То есть квадратная матрица?
да,в литературе и преподы называют и так и так

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

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

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

Добавлено через 43 минуты
Цитата Сообщение от vaselo Посмотреть сообщение
а не по всему элементу.
не по всей матрице
0
MILAN
885 / 779 / 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;
}
1
dihlofos
Бродяга
303 / 257 / 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
//.....
1
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;
0
MILAN
885 / 779 / 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;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2010, 20:27
Привет! Вот еще темы с ответами:

Найти минимальный и максимальный элемент матрицы - C++
Найти минимальный и максимальный элемент матрицы и вывести его на экран с указанием номеров их строк и столбцов. Нужно подправить программу...

Найти минимальный элемент упорядоченной матрицы - C++
#include &lt;iostream&gt; using namespace std; int main() { int n, m, imin, min, h, s, j, i, a; cout &lt;&lt; &quot;n = &quot;;...

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

Найти минимальный отрицательный элемент квадратной матрицы - C++
Дана матрица размерностью n*n Среди элементов определить минимальный отрицательный элемент и его координаты. Если таких элементов нет на...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
17.10.2010, 20:27
Ответ Создать тему
Опции темы

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