Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 12:04   #1
lera93
Пользователь
 
Аватар для lera93
 
Регистрация: 20.12.2010
Сообщений: 20
Печаль C++

Пожалуйста, помогите решить програмку

Элемент матрицы является седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце (или наоборот: наибольшим в своей строке и наименьшим в своем столбце).Для заданной матрицы определить все седловые точки.
Заранее всем большое спасибо
Есть подобная программа(как бы пример)
#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.
lera93 вне форума Ответить с цитированием
Старый 22.12.2010, 14:34   #2
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 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]))
// точка седловая
UltimaBeaR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц