Вывести индексы всех седловых точек, сравнить значения в строках, найти средние в столбцах - C (СИ)
Формулировка задачи:
1. Дана прямоугольная матрица. Вывести индексы всех седловых точек заданной матрицы. Элемент матрицы называется седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своём столбце или, наоборот, является наибольшим в своей строке и наименьшим в своём столбце.
2. Если все элементы какой-либо строки данной матрицы равны между собой, то все элементы такой строки заменить нулями.
3. Вычислить и вывести среднее значение в каждом столбце прямоугольной матрицы
Никто не поможет?(
Решение задачи: «Вывести индексы всех седловых точек, сравнить значения в строках, найти средние в столбцах»
textual
Листинг программы
#include "stdio.h"
int main(void)
{
int i,p,j,L,L2,pch,t1=0,min,min2,max,max2,k,k2;
double d=0,t=0;
int a[3][3]={{5,6,4},{3,1,2},{3,3,3}};
for(i=0;i<3;i++){
min=a[i][0];
max2=a[i][0];
k=0;
k2=0;
for(j=1;j<3;j++)
{
if ( a[i][j] < min ){min=a[i][j]; k=j; }
if ( a[i][j] > max2) { max2=a[i][j]; k2=j;}
}
max=a[i][k];
L=0;
min2=a[i][k2];
L2=0;
for (j=1;j<3;j++){
if(a[j][k] > max ){max=a[j][k]; L=j; }
if (a[j][k] < min2){min2=a[j][k2]; L2=j;}
}
if ((a[L][k]==min && a[L][k]==max)){printf("sedl. tochka v stroke %d = %d\n",i,max);}
if (a[L2][k2] == min2 && a[L2][k2] == max2){printf("sedl. tochka v stroke %d = %d\n",i, max2);}
}
for(i=0;i<3;i++){
p=a[i][0];
for(j=0;j<3;j++){
t+=a[j][i];
t1+=1;
}
d=t/t1;
printf("srednee arifmeticheskoe po %d stolbtsu = %f\n",i, d);
t1=0;
t=0;
d=0;
}
for(i=0;i<3;i++){
p=a[i][0];
pch=1;
for(j=1;j<3;j++){
if (p==a[i][j])pch+=1;
}
if(pch==j){for(j=0;j<3;j++)a[i][j]=0; }
}
return 0;
}
Объяснение кода листинга программы
Код выполняет следующие действия:
- Ищет седловые точки в каждом из трех строк матрицы a[3][3].
- Находит минимальное и максимальное значение в каждой строке и записывает их в переменные min, max и min2, max2 соответственно.
- Находит индексы ячеек с минимальным и максимальным значением в каждой строке и записывает их в переменные L и L2.
- Проверяет, является ли найденное значение седловым, и выводит соответствующее сообщение.
- Вычисляет среднее значение в каждом столбце и записывает его в переменную d.
- Выводит среднее значение для каждого столбца.
- Устанавливает начальные значения для всех переменных, используемых во втором цикле.
- Во втором цикле проходит по всем элементам матрицы, суммирует их и записывает результат в переменную t.
- Проверяет, является ли значение в текущей ячейке равным значению в первом столбце, и если да, увеличивает счетчик pch.
- Если значение pch равно количеству элементов в строке, то все элементы в этой строке обнуляются.
- Код завершается возвратом 0.