/
Messus
/
Algorithms
Обзор
Документация
Войти
/
Messus
/
Algorithms
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
ai_array.c
100 строк
4 KB
Messus
delete all *.java
03 мар 2026, 12:09
03 мар 2026, 12:09
6310ada
Код
Авторство
О чём код?
//ai_array.c --- массив сгенерированный AI #include <stdio.h> #include <stdlib.h> #include <time.h> #include <locale.h> #include <windows.h> #define DIM1 3 // размер по первой оси #define DIM2 4 // размер по второй оси #define DIM3 5 // размер по третьей оси int main() { setlocale(LC_ALL, ""); SetConsoleCP(1251); SetConsoleOutputCP(1251); // Инициализация генератора случайных чисел srand(time(NULL)); // Объявление и выделение памяти под трёхмерный массив int ***array; // Шаг 1: выделяем память для указателей на «слои» (DIM1) array = (int ***)malloc(DIM1 * sizeof(int **)); if (array == NULL) { fprintf(stderr, "Ошибка выделения памяти для array\n"); return 1; } // Шаг 2: для каждого «слоя» выделяем память под строки (DIM2) for (int i = 0; i < DIM1; i++) { array[i] = (int **)malloc(DIM2 * sizeof(int *)); if (array[i] == NULL) { fprintf(stderr, "Ошибка выделения памяти для слоя %d\n", i); // Освобождаем уже выделенную память for (int j = 0; j < i; j++) { for (int k = 0; k < DIM2; k++) { free(array[j][k]); } free(array[j]); } free(array); return 1; } } // Шаг 3: для каждой строки выделяем память под столбцы (DIM3) for (int i = 0; i < DIM1; i++) { for (int j = 0; j < DIM2; j++) { array[i][j] = (int *)malloc(DIM3 * sizeof(int)); if (array[i][j] == NULL) { fprintf(stderr, "Ошибка выделения памяти для строки [%d][%d]\n", i, j); // Освобождаем уже выделенную память for (int a = 0; a <= i; a++) { for (int b = 0; b < DIM2; b++) { free(array[a][b]); } free(array[a]); } free(array); return 1; } } } // Заполнение массива случайными числами for (int i = 0; i < DIM1; i++) { for (int j = 0; j < DIM2; j++) { for (int k = 0; k < DIM3; k++) { array[i][j][k] = rand() % 100; // числа от 0 до 99 } } } // Вывод части массива для проверки printf("Часть трёхмерного массива (первые 2 слоя, первые 3 строки, все столбцы):\n"); for (int i = 0; i < DIM1; i++) { // слои printf("Слой %d:\n", i); for (int j = 0; j < DIM2; j++) { // строки printf(" Строка %d: ", j); for (int k = 0; k < DIM3; k++) { // столбцы printf("%3d ", array[i][j][k]); } printf("\n"); } } // Освобождение памяти for (int i = 0; i < DIM1; i++) { for (int j = 0; j < DIM2; j++) { free(array[i][j]); // освобождаем память под столбцы } free(array[i]); // освобождаем память под строки } free(array); // освобождаем память под слои return 0; }