code:
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#include <conio.h>
int CreateMatrix (int **, int);
void DestroyMatrix (int **, int);
void ProcessMatrix (int **, int);
void PrintMatrix (int **, int);
int main ()
{
int **matrix;
int size = 0;
printf ("Введите размер матрицы:");
scanf ("%d", &size);
if (size <= 0 || size > 15)
{
printf ("\nНеверно указан размер матрицы");
return 0;
}
if (!CreateMatrix (matrix, size))
{
printf ("\nОшибка при создании матрицы");
goto end;
}
ProcessMatrix (matrix, size);
PrintMatrix (matrix, size);
end:
DestroyMatrix (matrix, size);
return 0;
}
int CreateMatrix (int **matrix, int size)
{
int i = 0;
int j = 0;
if ((*matrix = (int*) malloc (sizeof (int*) * size)) != NULL)
{
for (i = 0; i < size; i++)
{
if ((matrix [i] = (int*) malloc (sizeof (int) * size)) == NULL)
{
return 0;
}
}
for (i = 0; i < size; i++)
{
printf ("\nВведите строку %d: ", i);
for (j = 0; j < size; j++)
{
scanf ("%d", &matrix [i] [j]);
}
}
return 1;
}
return 0;
}
void DestroyMatrix (int **matrix, int size)
{
if (*matrix)
{
for (int i = 0; i < size; i++)
{
if (matrix[i] != NULL)
{
free ((void*) matrix[i]);
}
}
free ((void*) *matrix) ;
}
}
void PrintMatrix (int **matrix, int size)
{
printf ("\n\nРезультат:\n");
for (int i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
{
printf ("%d ", matrix [i] [j]);
}
putchar ('\n');
}
}
void ProcessMatrix (int **matrix, int size)
{
int max = 0;
int maxpos = 0;
for (int i = 0; i < size; i++)
{
max = matrix [i] [0];
maxpos = 0;
for (j = 1; j < size; j++)
{
if (matrix [i] [j] > matrix [i] [j - 1])
{
max = matrix [i] [j];
maxpos = j;
}
}
matrix [i] [maxpos] = matrix [i] [i];
matrix [i] [i] = max;
}
}