Написать функцию, которая зеркально отображает все элементы массива 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы