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

Задача

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

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;
}
Перейти к верхней панели