C/C++

Элементы Матрицы C++

Найти в каждой строке матрицы 4x4 наибольший и наименьший элементы и поменять их местами с первым и последним элементами строки соответственно.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define n 4
#define top 10
int main()
{
srand(time(NULL));
int min,max=-1,**matrix=(int**)malloc(n*sizeof(int*));
if(!matrix) exit(1);
for(int i = 0; i < n; i++)
{
matrix[i]=(int*)malloc(n*sizeof(int));
if(!matrix[i]) exit(1);
}
printf("Start matrix:\n");
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
printf(" %d",(matrix[i][j]=rand()%top));
}
printf("\n");
}

printf("\n\nResult matrix:\n");
for(int i = 0; i < n; i++)
{
min=top;
int mini,minj,maxi,maxj;
for(int j = 0; j < n; j++)
{

if(min>matrix[i][j])
{
min=matrix[i][j];
mini=i;
minj=j;
}
}
matrix[mini][minj]=matrix[i][n-1];
matrix[i][n-1]=min;
}

for(int i = 0; i < n; i++)
{
max=-1;
int maxi,maxj;
for(int j = 0; j < n; j++)
{
if(max<matrix[i][j])
{
max=matrix[i][j];
maxi=i;
maxj=j;
}
}
matrix[maxi][maxj]=matrix[i][0];
matrix[i][0]=max;
}

printf("\n");
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
printf(" %d",matrix[i][j]);
}
printf("\n");
}

for(int i = 0; i < n; i++)
free(matrix[i]);
free(matrix);
system("pause");
return 0;
}
СД
Сергей Дворядкин
37 945
Лучший ответ
Во Шер Евгений, это ЧТО за безобразие?
matrix[i]=(int*)malloc(n*sizeof(int));
if(!matrix[i]) exit(1);
При невыделении памяти в 1 или 2 строках выход из программы? А кто будет удалять память уже выделенную для 0 или 0 и 1 строк массива указателей? Здесь уже обсужалась эта проблема. И НИКТО меня не опроверг потому, что я прав
Хотя задание и неоднозначно
#include
#include
#include
#include

using namespace std;

void print(int(*)[4], int);

int main(int argc, char **argv)
{
system("chcp 1251 > nul"); // Руссификация сообщений
setlocale(LC_ALL, "Russian");

int arr[4][4]=
{
{4,8,0,2},
{-3,8,0,12},
{4,8,10,2},
{40,8,10,32},
};

print(arr, 4);

int mn,mx,tmp;

for (int r=0; r<4; r++)
{
mn= 0; mx=0;
for (int c=1; c<4; c++)
{
if(arr[r][c]arr[r][mx]) mx= c;
}
tmp= arr[r][mn]; arr[r][mn]=arr[r][0]; arr[r][0]= tmp;
tmp= arr[r][mx]; arr[r][mx]=arr[r][3]; arr[r][3]= tmp;
}
cout << endl << "Вуаля" << endl;

print(arr, 4);

system("pause"); // system("pause > nul");
return 0;
}
void print(int (*numbers)[4], int Count)
{
for (int r=0; r<Count; r++)
{
for (int c=0; c<Count; c++)
{
cout << numbers[r][c] << '\t';
}
cout << endl;
}

}