Другие языки программирования и технологии

помогите написать на Си программу, пожалуйста

В каждом столбце матрицы А размера n*n поменять местами минимальный элемент и элемент, находящийся на побочной диагонали.
AR
Aidos Rasulov
496
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define RANK 25
void pause() {
while (getchar() != '\n');
getchar();
}
void swap(int*a, int* b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
int* min_element(int* v, int n) {
int* beg = v;
int* end = v + n;
int* pm = v;
while (++beg != end) if (*beg < *pm) pm = beg;
return pm;
}
void print(int* v, int n) {
int i;
for (i = 0; i < n; ++i) printf("%4i", v[i]);
putchar('\n');
}
void fill_row(int* v, int n, int a, int b) {
int i;
if (b < a) swap(&a, &b);
for (i = 0; i < n; ++i) v[i] = a + rand() % (b - a);
}
void transposition(int* v, int n, int* x) {
int* pm = min_element(v, n);
if (x != pm) swap(pm, x);
}
int main(void) {
int n;
int matrix[RANK][RANK];
int a = 10, b = 100;
int i, j;
do {
printf(" n: ");
scanf_s("%i", &n);
} while (n < 3 || n > RANK);
srand((unsigned)time(NULL));
for (i = 0; i < n; ++i) fill_row(matrix[i], n, a, b);
for (i = 0; i < n; ++i) print(matrix[i], n);
putchar('\n');
for (i = 0, j = n - 1; i < n; ++i, --j) transposition(matrix[i], n, &matrix[i][j]);
for (i = 0; i < n; ++i) print(matrix[i], n);
pause();
return 0;
}
KQ
Kənan Qafar
84 067
Лучший ответ