Сформировать матрицу из перестановок одномерного массива - C (СИ)
Формулировка задачи:
Помогите написать программу к задаче.
Дан одномерный массив.Сформировать двумерный,поменяв элементы местами.
Т.е. допустим дан одномерный массив
a1 a2 a 3
И сформировать двумерный массив.
a1 a2 a3
a2 a3 a1
a3 a1 a2
Решение задачи: «Сформировать матрицу из перестановок одномерного массива»
textual
Листинг программы
#include <stdio.h>
#define N 5
void Generate(int (*arr)[N])
{
int i = 0;
int j = 0;
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
if (i == 0)
{
arr[i][j] = j;
}
else
{
arr[i][j] = arr[i - 1][(j+1) % N];
}
}
}
}
void Print(int (*arr)[N])
{
int i = 0;
int j = 0;
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main(void)
{
int a[N][N];
Generate(a);
Print(a);
return 0;
}
Объяснение кода листинга программы
Вывод на экран матрицы из перестановок одномерного массива:
- Включаем заголовочный файл
для использования функций вывода на экран. - Определяем размер массива N.
- Создаём функцию Generate, которая будет генерировать перестановки. В качестве аргумента передаём указатель на массив.
- Внутри функции объявляем две переменные для индексов i и j.
- В цикле for заполняем массив a значениями перестановок.
- Если i равно 0, то заполняем элемент arr[i][j] значением j.
- Иначе, значение элемента arr[i][j] равно arr[i-1][(j+1) % N].
- Создаём функцию Print для вывода матрицы на экран.
- В функции main создаём массив a размером N на N.
- Вызываем функцию Generate для заполнения массива a.
- Вызываем функцию Print для вывода матрицы на экран.
- Завершаем программу.