C/C++

Помогите срочно двумерные массивы в с++

Задан массив A(N,N), заполненный целыми случайными числами из диапазона [-41;23]. Найти минимальный четный элемент, лежащий на побочной диагонали.
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;

int main() {
setlocale(LC_ALL, "Russian");
int matrix[50][50];
int size;
cout << "Введите размер матрицы: ";
cin >> size;

srand(time(0));
for (int i = 0; i < size; ++i) {
for (int j = 0; j < size; ++j) {
cout << setw(5) << (matrix[i][j] = rand() % 65 - 41);
}
cout << "\n";
}

bool flag = false;
int min_even = 23;
for (int i = 0; i < size; ++i) {
int elem = matrix[i][size - i - 1];
if (elem % 2 == 0 && elem < min_even) {
min_even = elem;
flag = true;
}
}

if (flag) {
cout << "Минимальный четный элемент, лежащий на побочной диагонали: " << min_even << "\n";
} else {
cout << "На побочной диагонали нет четных элементов\n";
}

return 0;
}
Саша Попов
Саша Попов
6 243
Лучший ответ
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<unistd.h>
int main()
{
int N, min,indi,indj;
printf("\nMatrix dimension = ");
scanf("%d",&N);
if(N<2) N=2;
int **A = (int**)malloc(N * sizeof(int*));
for (int i = 0; i < N; i++)
A[i] = (int*)malloc(N * sizeof(int));
srand(time(NULL));
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if(rand()%2==0)
A[i][j]=(-1)*(rand()%42);
else
A[i][j]=rand()%24;
printf("A[%d][%d]=%d ",i,j,A[i][j]);
}
printf("\n");
}
min=A[N-2][1];
indj=N-2;
indi=1;
int count=0;
for(int j=0; j<N; j++)
for(int i = 0; i<N; i++)
{
count++;
if((j+i==N-1)&&count%2==0)
{
if(A[j][i]<min)
{
min=A[j][i];
indi=i;
indj=j;
}
}
}
printf("\n Minimal digit is A[%d][%d]=%d",indj,indi,min);
for (int i = 0; i < N; i++)
free(A[i]);
free(A);
printf("\n\n");
sleep(10);
return 0;
}
Aleksey Zoteev
Aleksey Zoteev
37 945