C/C++

Нужна ваша помощь по программированию C++

Составить программу для двухмерной обработки массива. Поменять местами столбцы матрицы, содержащие минимальные и максимальные элементы.
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<unistd.h>
#define one 5
#define two 5
#define MAX 100
#define MIN -100
typedef struct result
{
int min;
int max;
int min_i;
int min_j;
int max_i;
int max_j;
} result;

//функция вычисления
//максимального и
//минимального элементов:
result MinMax(int *arr, int One, int Two)
{
result res;
int min=MAX, max=MIN, min_i, min_j, max_i, max_j;
for(int i = 0; i < one; i++)
{//for i
for(int j = 0; j < two; j++)
{//for j
if( *(arr+i*two+j) < min )
{min = *(arr+i*two+j); min_i=i; min_j=j;}
if( *(arr+i*two+j) > max )
{max = *(arr+i*two+j); max_i=i; max_j=j;}
}//for j
}//for i
res.min=min;
res.max=max;
res.min_i=min_i;
res.min_j=min_j;
res.max_i=max_i;
res.max_j=max_j;
return res;
}

int main()
{
int array[one][two];

result res;
srand(time(NULL));
printf("Array:\n");
for(int i = 0; i < one; i++)
{
for(int j = 0 ; j < two; j++)
{
if(rand()%2==0)
array[i][j] = rand()%MAX;
else
array[i][j] = (-1)*(rand()%MAX);
printf("%3d ",array[i][j]);
};
printf("\n");
}
res=MinMax(array,one,two);
printf("\n\nMinimal element = %4d ",res.min);
printf("[%d][%d]",1+res.min_i,1+res.min_j);
printf("\nMaximal element = %4d ",res.max);
printf("[%d][%d]",1+res.max_i,1+res.max_j);

//перестановка столбцов
//с минимальным и
//максимальным элементами:
for(int i = 0; i < one; i++)
array[i][res.min_j]^=
array[i][res.max_j]^=
array[i][res.min_j]^=array[i][res.max_j];

//вывод итоговой матрицы
//с переставленными столбцами:
printf("\n\nResult Array:\n");
for(int i = 0; i < one; i++)
{
for(int j = 0; j < two; j++)
{
printf("%3d ",array[i][j]);
};
printf("\n");
}

fflush(stdout);//сброс буфера
sleep(10);//пауза
return 0;
}
СШ
Сергей Шиков
37 945
Лучший ответ