C/C++

Помогите с программированием на Си

Создать квадратную матрицу порядка n, заполненную случайными действительными числами. Найти наибольшее из значений элементов в заштрихованной части матрицы.
Помогите, что у меня неправильно ?
#define _CRT_SECURE_NO_WARNINGS

#include
#include
#include
#include

int main()
{
setlocale(LC_ALL, "Rus"); // i это строка, а j столбец, индекс массивов от 0 до n-1, n -размер массива
int n = 0;
const int p = 5;
srand(42);

int arr[5][5] = {0};
for (int i = 0;i < p;i++) {
for (int j =0;j < p;j++)
arr[i][j]=rand();
}
for (int i = 0; i < p; i++)
{
for (int j = 0; j <p; j++)
{
printf("arr[P][%d] %5d ",j,arr[i][j]);
}
printf("\n");
}
int max = arr[0][0];
for (int i = 0;i < (p/2);i++) { //идем сперва до (n-1)/2 индекса по строкам
for (int j = 0;j < p;j++) {
if (arr[i][j] > max)
max = arr[i][j];
}
}
printf("-------------------------------\n");//проблемное место начинается здесь
for (int i = p / 2;i < p;i++) { //в этот диапазон входят элементы, которые не должны учитываться
for (int j = 0;j < p;j++) {
//if ((i >= j) && (n - j + 1 <= i) && (arr[i, j] > max)) //не знаю как не учитывать элементы те.
//max = arr[i, j];
printf("arr[P][%d] %5d ", j, arr[i][j]);
}
printf("\n");
}
printf("max = %d", max);
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<unistd.h>
#define MAX 10
int main()
{
int n,maxi,maxj,k=0;
float **m,max=-1.0;

printf("Enter size of matrix[n,n] n = ");
scanf("%d",&n);
if(n==0)
{n++;printf("\n n = %d",n);}
m=(float**)malloc(n*sizeof(float*));
if(m)
{//if m
for(int i = 0; i < n; i++)
{//for i
//m[i]=0; printf("\n%p",m[i]);
m[i]=(float*)malloc(n*sizeof(float));
if(!m[i])
{
printf("\nError. Column not created.");
exit(1);
}
}//for i
//начальная матрица:
srand(time(NULL));
printf("\n Start matrix[%d][%d]:\n",n,n);
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
m[i][j]=rand()%MAX+(0.1*(rand()%10));
printf("%5.1f",m[i][j]);
}
printf("\n");
}

//обнуляемая область:
for(int i = n-1; i > (int)(round(n/2)); i--)
{
for(int j = n-2-k; j > k ; j--)
{
m[i][j]=0.0;
}
k++;
}

//итоговая матрица:
printf("\n Result matrix:\n");
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
printf("%5.1f",m[i][j]);
}
printf("\n");
}

//поиск наибольшего значения:
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
if(m[i][j]>max)
{
max=m[i][j];
maxi=i; maxj=j;
}
printf("\nMaximum - m[%d][%d]=%.1f",maxi+1,maxj+1,max);

for(int i = 0; i < n; i++)
free(m[i]);
free(m);
}//if m
else
printf("\nError. Matrix not created.");
fflush(stdout);
sleep(10);
return 0;
}
Adidas Forever *$¤¤¤¤¤¤$*
Adidas Forever *$¤¤¤¤¤¤$*
37 945
Лучший ответ
Пойди хитро! Сделай такую же матрицу int из 0 и 1. Штрихованная область это 1, а 0 - пустая
1 1 1 1 1
1 1 1 1 1
1 1 0 1 1
1 0 0 0 1
0 0 0 0 0
Читаешь из матрицы-карты состояние элемента - если 1- штрихованное поле вычисляем, а 0 - пропускаем
Юрий Ожмегов
Юрий Ожмегов
21 700
Юрий Ожмегов int SquareMatr[5][5]= {
{11,12,13,14,15},
{21,22,23,24,25},
{31,32,33,34,35},
{41,42,43,44,45},
{51,52,53,54,55}
};
int MapCard[5][5]= {
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 0, 1, 1},
{1, 0, 0, 0, 1},
{0, 0, 0, 0, 0}
};
Юрий Ожмегов int maxRow=0; int maxCol=0;

for(int rr=0; rr<5; rr++)
{
for(int cc=0;cc<5; cc++)
{
if (MapCard[rr][cc]==1)
{
if (SquareMatr[rr][cc] > SquareMatr[maxRow][maxCol])
{
maxRow= rr; maxCol= cc;
}
}
}
}
printf("Самый БОЛЬШОЙ элемент матрицы= %d\n", SquareMatr[maxRow][maxCol]);
printf("СТРОКА %d \t КОЛОНКА %d\n", maxRow, maxCol);