Формирование двумерного массива из одномерного

1 минут

Задача🔗︎

Ввести одномерный массив. Например:

2    9    4    -2    9    8    6    3    0    -4    5    1

Сформировать двумерный массив по заданному правилу:

 1    5    -4    0
 3    6     8    9
-2    4     9    2

В двумерном массиве найти значение минимального элемента. Вывести массивы и результат на экран.

Решение на C++🔗︎

#include <iostream>

#define ARRAY_ROWS 3
#define ARRAY_COLUMNS 4
#define ARRAY_SIZE (ARRAY_ROWS * ARRAY_COLUMNS)

void input_data(int *array);
void array_proc(int *array_first, int **array_second);
void print_min_value(int **array);
void print_arrays(int *array_first, int **array_second);

int main()
{
    // ввод данных
    int *array_first = new int [ARRAY_SIZE];
    input_data(array_first);

    // формирование двумерного массива по правилу
    int **array_second = new int *[ARRAY_ROWS];
    for (int i = 0; i < ARRAY_ROWS; i++) {
        array_second[i] = new int [ARRAY_COLUMNS];
    }

    array_proc(array_first, array_second);

    // вывод результата
    print_arrays(array_first, array_second);
    print_min_value(array_second);
    return 0;
}

void input_data(int *array)
{
    for (int i = 0; i < ARRAY_SIZE; i++) {
        std::cout << "Введи элемент №" << i << ": ";
        std::cin >> array[i];
    }
}

void array_proc(int *array_first, int **array_second)
{
    int i, j;
    for (i = 0; i < ARRAY_ROWS; i++) {
        for (j = 0; j < ARRAY_COLUMNS; j++) {
            array_second[i][j] = array_first[ARRAY_ROWS * ARRAY_COLUMNS - i * ARRAY_COLUMNS - j - 1];
        }
    }
}

void print_min_value(int **array)
{
    int i, j, min = array[0][0];
    for (i = 0; i < ARRAY_ROWS; i++) {
        for (j = 0; j < ARRAY_COLUMNS; j++) {
            if (min > array[i][j]) {
                min = array[i][j];
            }
        }
    }
    std::cout << "Минимальное значение: " << min << std::endl;
}

void print_arrays(int *array_first, int **array_second)
{
    int i, j;
    std::cout << "Одномерный массив: ";
    for (i = 0; i < ARRAY_SIZE; i++) {
        std::cout << array_first[i] << " ";
    }
    std::cout << std::endl;

    std::cout << "Двумерный массив: " << std::endl;
    for (i = 0; i < ARRAY_ROWS; i++) {
        std::cout << "    ";
        for (j = 0; j < ARRAY_COLUMNS; j++) {
            std::cout << array_second[i][j] << " ";
        }
        std::cout << std::endl;
    }
    std::cout << std::endl;
}