Другие языки программирования и технологии
помогите написать на Си программу, пожалуйста
В каждом столбце матрицы А размера n*n поменять местами минимальный элемент и элемент, находящийся на побочной диагонали.
#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;
}
#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;
}
Похожие вопросы
- Помогите написать в QBasic программу-фильтр! У МЕНЯ ЗАЧЕТ!!!
- Помогите написать алгоритм и программу на фортране
- аааа сессия горит!!! помогите написать на си(не с++): перевод числа в двоичную систему
- Помогите написать задачи Си++ !
- Помогите написать на Си
- Здраствуйте, помогите написать вот такую программу.
- Помогите написать код для программы...
- Помогите написать на PascalABC программу
- Помогите написать в Паскале программу
- Помогите написать программу со switch в СИ