Напечатать индексы всех седловых точек матрицы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

1) Элемент матрицы назовем седловой точкой, если он наименьший в своей строке и наибольший (одновременно) в своем столбце (или наоборот, наибольший в своей строке и наименьший в своем столбце). Для заданной целой матрицы размером 10 x 12 напечатать индексы всех ее седловых точек
#include "stdafx.h"
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
    int i,j,n,m,minj;
    i = 0;
    j = 0;
int a[100][100];
    printf("BBeguTe koJlu4ecTBo cTpok:\n");
        scanf("%d", &n);
    printf("BBeguTe koJlu4ecTBo CToJl6lLoB:\n");
    scanf("%d", &m);
    
    for(i=0;i<n;i++)
        for(j=0;j<m;j++);
for (i=0;i<n;i++)
    for (j=0;j<m;j++)
        
    {
        printf("BBeguTe 3JleMeHT [%d,%d]\n", i+1, j+1);
        scanf("%f",&a[i][j]);
    }
for(i=0;i<n;i++)
{minj=0;
for(j=1;j<m;j++)
if(a[i][j]<a[i][minj])
minj=j;
for(j=0;j<n;j++)
if(a[j][minj]>a[i][minj] && j!=i)break;
 
if(j==n)
printf("[%d][%d]\n",i+1,minj+1);
}

    getch();
    return 0;
}
вот код нужно сделать через указатели

Решение задачи: «Напечатать индексы всех седловых точек матрицы»

textual
Листинг программы
#include <iostream>
using namespace std;
 
const int M = 3;
const int N = 3;
 
void input(int **a)
{
  cout<<"Input data: \n";
  for (int i=0; i<M; i++)
  {
    for(int j=0; j<N; j++)
    {
      cin>>a[i][j];
    }
  }
}
 
void output(int **a)
{
  cout<<"Output data: \n";
  for (int i=0; i<M; i++)
  {
    for (int j=0; j<N; j++)
      cout<<a[i][j]<<"  ";
    cout<<"\n";
  }
}
 
 
void del(int **a)
{
  for (int i = 0; i<M; i++)
  {
    delete [] a[i];
  }
   delete [] a;
}
 
void cedlovaTochka(int **a)
{
  int minj;
  int i, j;
  for (i=0; i<M; i++)
  {
    minj = 0;
    for (j=1; j<N; j++)
    {
      if (a[i][j] < a[i][minj])  minj = j;
    }
    for(j=0; j<M; j++)
    {
      if(a[j][minj] > a[i][minj] && j != i)  break;
    }
    if(j == M)  cout<<"["<<i+1<<"]"<<"["<<minj+1<<"]\n";
  }
}
 
int main()
{
  int **a = new int *[M];
  for (int i=0; i<M; i++)  a[i] = new int[N];
  input(a);
  output(a);
  cedlovaTochka(a);
  del(a);
  return 0;
}

Объяснение кода листинга программы

В этом коде реализуется алгоритм поиска седловых точек в квадратной матрице. Список функций и их назначение:

  1. Функция input используется для ввода данных в матрицу.
  2. Функция output используется для вывода данных из матрицы.
  3. Функция del используется для освобождения памяти, выделенной под матрицу.
  4. Функция cedlovaTochka используется для поиска индексов седловых точек матрицы. Список действий в функции main:
  5. Выделяется память под матрицу.
  6. В матрицу вводятся данные.
  7. Выводится содержимое матрицы.
  8. Находятся индексы седловых точек матрицы.
  9. Выделяемая память освобождается.
  10. Возвращается 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы