![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.12.2010
Сообщений: 20
|
![]()
Пожалуйста, помогите решить програмку
Элемент матрицы является седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце (или наоборот: наибольшим в своей строке и наименьшим в своем столбце).Для заданной матрицы определить все седловые точки. Заранее всем большое спасибо Есть подобная программа(как бы пример) #include <iostream> #include <cstdlib> #include <stdio.h> using namespace std; //объявление функций генерации float GenerateArray(float**,int,int); //и отображения массива void ShowArray(float**,int,int); //--основная функция программы----- int main() { int n=5,m=7; float A[n][m]; //объявление динамического массива float **M = new float*[n]; for (int i=0; i<n; i++) M[i] = A[i]; //вызов функции ввода элементов GenerateArray(M,n,m); //вызов функции ввода элементов ShowArray(M,n,m); getchar(); return 0; } //------------------------------------- //****раздел описания функций**** //описание функции генерации массива float GenerateArray(float **A, int n1, int m1) { //инициализация генератора случайных чисел srand(time(NULL)); for(int i=0;i<n1;i++) for(int j=0;j<m1;j++) { A[i][j]=float(rand()%100)/10; } return **A; } //+++++++++++++++++++++++++++++++++++ ++++ //описание функции вывода элементов массива на экран void ShowArray(float**array,int n2,int m2) { for(int i=0;i<n2;i++) {for(int j=0;j<m2;j++) printf("%.1f\t",array[i][j]); printf("\n"); } } Последний раз редактировалось lera93; 22.12.2010 в 12:24. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 21.12.2010
Сообщений: 199
|
![]()
предположим, что матрица размерности mat[m][n], тогда создаешь 4 дополнительных массива:
minN[n], maxN[n], minM[m], maxM[m] - тип массивов такойже как и у матрицы. В массивах будут хранится минимумы и максимумы для соответсвующих строк/столбцов проходишь по столбцам - считаешь минимумы и максимумы и пишешь их в minN[n], maxN[n], так же делаешь и со строками. дальше проходишь по всей матрице int i, j; for (i = 0; i < n; i++) for (j = 0; j < m; j++) и внутри циклов пишешь условие - если текущий [i][j] элемент равен минимуму в столбце и максимуму в строке или равен максимуму в столбце и минимуму в строке то отмечаешь его каким-то образом как седловую точку. условие будет такое: if ((mat[i][j] == minN[i] && mat[i][j] == maxM[j]) || (mat[i][j] == maxN[i] && mat[i][j] == minM[j])) // точка седловая |
![]() |
![]() |