Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 28.09.2023
Сообщений: 1

Создание и удаление матриц различыми способами

28.09.2023, 15:42. Показов 4073. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>
#include <stdlib.h>
 
// Функция для выделения памяти под матрицу
int** allocateMatrix(int rows, int cols, int allocationType) {
    int** matrix = NULL;
    
    if (allocationType == 1) { // Статическое выделение
        static int staticMatrix[100][100];
        matrix = (int**)staticMatrix;
    } else if (allocationType == 2) { // Динамическое выделение
        matrix = (int**)malloc(rows * sizeof(int*));
        if (matrix != NULL) {
            for (int i = 0; i < rows; i++) {
                matrix[i] = (int*)malloc(cols * sizeof(int));
            }
        }
    } else if (allocationType == 3) { // Динамическое выделение (поэлементное)
        matrix = (int**)malloc(rows * sizeof(int*));
        if (matrix != NULL) {
            matrix[0] = (int*)malloc(rows * cols * sizeof(int));
            for (int i = 1; i < rows; i++) {
                matrix[i] = matrix[0] + i * cols;
            }
        }
    }
    
    return matrix;
}
 
// Функция для освобождения памяти, выделенной под матрицу
void deallocateMatrix(int** matrix, int rows, int allocationType) {
    if (allocationType == 2 || allocationType == 3) {
        for (int i = 0; i < rows; i++) {
            free(matrix[i]);
        }
        free(matrix);
    }
}
 
// Функция для ввода матрицы
void inputMatrix(int** matrix, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            scanf("%d", &matrix[i][j]);
        }
    }
}
 
// Функция для вывода матрицы
void printMatrix(int** matrix, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%d", matrix[i][j]);
            if (j < cols - 1) {
                printf(" ");
            }
        }
        if (i < rows - 1) {
            printf("\n");
        }
    }
}
 
int main() {
    int rows, cols;
    int allocationType;
 
    // Меню выбора типа выделения памяти
    printf("Выберите тип выделения памяти:\n");
    printf("1. Статическое\n");
    printf("2. Динамическое\n");
    printf("3. Динамическое (поэлементное)\n");
    scanf("%d", &allocationType);
 
    printf("Введите количество строк и столбцов матрицы: ");
    scanf("%d %d", &rows, &cols);
 
    int** matrix = allocateMatrix(rows, cols, allocationType);
 
    if (matrix == NULL) {
        printf("n/a\n");
        return 1;
    }
 
    printf("Введите элементы матрицы:\n");
    inputMatrix(matrix, rows, cols);
 
    printf("Введенная матрица:\n");
    printMatrix(matrix, rows, cols);
 
    // Освобождение памяти
    deallocateMatrix(matrix, rows, allocationType);
 
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2023, 15:42
Ответы с готовыми решениями:

Написать 4 функции для матриц(Создание матрицы, печать, поиск минимального элемента, удаление столбцов)
Написать функции: 1. создания матрицы размерности A , элементы матрицы А – вещественные числа. Параметры функции – сама матрица, ее...

Как сделать закачку и удаление файлов, создание и удаление каталогов?
Как сделать закачку и удаление файлов, создание и удаление каталогов?

Создание БД различными способами
Скажите, как выгоднее будет сделать: создать БД или создать каталог(дерево) файлов, в котором будут имена папок отображать день записи...

2
Модератор
 Аватар для long399
2884 / 1839 / 933
Регистрация: 16.10.2013
Сообщений: 5,244
Записей в блоге: 15
29.09.2023, 06:07
EduardE, а вопрос-то в чем ?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
29.09.2023, 07:16
C
1
2
3
4
5
6
7
8
9
10
11
12
13
// Функция для освобождения памяти, выделенной под матрицу
void deallocateMatrix(int** matrix, int rows, int allocationType) {
    if (allocationType == 2 {
        for (int i = 0; i < rows; i++) {
            free(matrix[i]);
        }
        free(matrix);
    } else
    if (allocationType == 3) {
        free(matrix[0]);
        free(matrix);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2023, 07:16
Помогаю со студенческими работами здесь

Создание функции 2 способами
Здравствуйте Надо написать функцию name которая должна определять количество разных элементов списка Пример: &gt;(name '(a1 a2 a3 a1...

удаление одинаковых строк из 2-х матриц
из 2-х матриц порядка N удалить одинаковые строки

Создание программы со своей библиотекой ( удаление элементов с N по M в строке и удаление лишних пробелов(если 2 и более оставить один))
добрый день. помогите, пожалуйста понять мои ошибки в работе. Мне нужно написать программу со своей библиотекой, которая включает в себя...

Создание и сортировка одномерного массива тремя различными способами
Очень нужна помощь с Лазарусом. Я в программировании очень плох, практически ничего не знаю, поэтому надеюсь на вашу помощь, нужно создать...

Удаление строки и столбца в матрице с использованием других матриц
Задача: сделать программу, удаляющую из матрицы строку с самым минимальным элементом и столбец с самым максимальным. Надо сделать через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru