Написать функцию, которая зеркально отображает все элементы массива A[1.n][1.n] относительно вертикальной оси симметрии - C (СИ)
Формулировка задачи:
Написать функцию, которая зеркально отображает все элементы массива A[1..n][1..n] относительно вертикальной оси симметрии.
Функция должна иметь следующий заголовок:
void otobr(int **A, int n)
Например исходный массив:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
В результате:
5 4 3 2 1
5 4 3 2 1
5 4 3 2 1
5 4 3 2 1
5 4 3 2 1
Решение задачи: «Написать функцию, которая зеркально отображает все элементы массива A[1.n][1.n] относительно вертикальной оси симметрии»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> //----------------------------------------------------------------------------- void Swap(int* a, int* b) { int tmp = *a; *a = *b; *b = tmp; } //----------------------------------------------------------------------------- void Reverse(int* array, unsigned size) { int* begin = array; int* end = array + size - 1; while (begin < end) { Swap(begin++, end--); } } //----------------------------------------------------------------------------- // void otobr(int **A, int n) void ReverseAll(int** array, unsigned size) { unsigned i = size; while (i--) { Reverse(*array++, size); } } //----------------------------------------------------------------------------- void Print(int** array, unsigned size) { unsigned i, j; for (i = 0; i < size; ++i) { for (j = 0; j < size; ++j) { printf("%d ", array[i][j]); } printf("\n"); } printf("\n"); } //----------------------------------------------------------------------------- int Random(int min, int max) { return rand() % (max - min + 1) + min; } //----------------------------------------------------------------------------- int Fill(int** array, unsigned size, int min, int max) { unsigned i, j; for (i = 0; i < size; ++i) { for (j = 0; j < size; ++j) { array[i][j] = Random(min, max); } } } //----------------------------------------------------------------------------- int** GetArray(unsigned size) { unsigned i; int** array = malloc(sizeof(int*) * size); for (i = 0; i < size; ++i) { array[i] = malloc(sizeof(int) * size); } return array; } //----------------------------------------------------------------------------- void FreeArray(int** array, unsigned size) { while (size--) { free(array[size]); } free(array); } //----------------------------------------------------------------------------- int main() { unsigned size; int** array; printf("size array: "); if (scanf("%u", &size) != 1) { return 1; } array = GetArray(size); Fill(array, size, 10, 99); printf("source:\n"); Print(array, size); ReverseAll(array, size); printf("result:\n"); Print(array, size); FreeArray(array, size); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д