Замена максимального и минимального элементов прямоугольной матрицы их средним геометрическим - C (СИ)
Формулировка задачи:
Написать программу замены максимального и минимального элементов прямоугольной матрицы. Заменить их средним геометрическим. Массив заполняется пользователем с клавиатуры. Результат вывести на экран.
вот мой код, он не все проблемы решает, а именно не делает замену. подскажите, что нужно сделать.
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
const int M = 5;
const int N = 4;
void main()
{
int i, j,imin=0,jmin=0,imax=0,jmax=0;
float A[M][N],max,min,sred,proizv=1;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
(float)A[i][j]=2+rand()%10;
}
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%f\t",A[i][j]);
}
printf("\n");
}
(float)max=(float)A[0][0],(float)min=(float)A[0][0];
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(A[i][j]<=min)
{
min=A[i][j];
imin=i;
jmin=j;
}
if(A[i][j]>=max)
{
max=A[i][j];
imax=i;
jmax=j;
}
}
}
printf("max element raven %f\n",max);
printf("min element raven %f\n",min);
proizv=min*max;
printf("proizv max i min ravno %f\n",proizv);
sred=sqrt(proizv);
printf("srednee geometr ravno %f\n",sred);
max=sred,min=sred;
printf("\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(A[i][j]==max)
printf("%f",sred);
else
printf("%f\t",A[i][j]);
}
printf("\n");
}
}Решение задачи: «Замена максимального и минимального элементов прямоугольной матрицы их средним геометрическим»
textual
Листинг программы
int i, j, max,min,x[5][4];
int x,y;
...
...
...
max = x[0][0];
min = x[0][0];
for(i=0; i<5; i++)
{ for(j=1;j<4;j++)
{if(x[i][j]) > max)
{max = x[i][j] ;x=i;y=j;}
else if(x[i][j] < min)
{ min = x[i][j] ; t=i;p=j;}}
f=x[x][y];
x[x][y]=x[t][j];
x[t][j]=f;
Объяснение кода листинга программы
В этом коде выполняется замена максимального и минимального элементов прямоугольной матрицы их средним геометрическим. Вот список действий, которые происходят в коде:
- Переменные
i,j,max,minи массивx[5][4]объявляются. - Переменные
xиyинициализируются. maxиminинициализируются значением первого элемента первой строки матрицыx.- Два вложенных цикла
forиспользуются для итерации по всем элементам матрицыx. - Внутри первого цикла
for, второй циклforитерируется по всем элементам второй строки каждого подмассива. - Если текущий элемент больше
max, то обновляются значенияmaxиx,yуказывают на текущий элемент. - Если текущий элемент меньше
min, то обновляются значенияmin,tиpуказывают на текущий элемент. - Значение
fинициализируется значениемx[x][y]. x[x][y]заменяется значениемx[t][j].x[t][j]заменяется значениемf.