/
FlowerTower
/
System_Programming_in_Linux
Обзор
Документация
Войти
/
FlowerTower
/
System_Programming_in_Linux
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Arrays/Task4.c
82 строки
2 KB
FlowerTower
create Arrays/Task4.c
28 окт 2024, 00:04
28 окт 2024, 00:04
52aa326
Код
Авторство
О чём код?
/* Программа заполняет массив произвольного размера N "улиткой". */ #include <stdio.h> #include <stdlib.h> int N; // объявляем глобальную переменную N, которая будет размером нашей квадратной матрицы void output_arr(int** arr) // функция вывода матрицы в консоль. { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { printf("%d ", arr[i][j]); } printf("\n"); } } void input_arr(int** arr) // функция заполнения матрицы числами { int top = 0, bottom = N - 1; int left = 0, right = N - 1; int num = 1; while (num <= N * N) { // Заполнение верхней строки for (int i = left; i <= right; i++) { arr[top][i] = num++; } top++; // Заполнение правого столбца for (int i = top; i <= bottom; i++) { arr[i][right] = num++; } right--; // Заполнение нижней строки, если есть еще строки if (top <= bottom) { for (int i = right; i >= left; i--) { arr[bottom][i] = num++; } bottom--; } // Заполнение левого столбца, если есть еще столбцы if (left <= right) { for (int i = bottom; i >= top; i--) { arr[i][left] = num++; } left++; } } } int main() { printf("Введите размер квадратной матрицы: "); scanf("%d", &N); printf("размер вашей матрицы: %d\n", N); // Динамическое выделение памяти под массив int** arr = (int**)malloc(N * sizeof(int*)); for (int i = 0; i < N; i++) { arr[i] = (int*)malloc(N * sizeof(int)); } input_arr(arr); output_arr(arr); // Освобождение памяти for (int i = 0; i < N; i++) { free(arr[i]); } free(arr); }