Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41

Удаление динамического массива

14.12.2013, 22:29. Показов 1190. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Сделал программу с 3 динамическими массивами, но дело в том, что 2 из них, размер которых задается с клавиатуры, удаляются в конце из памяти, а 3-ий, размер которого формируется в процессе выполнения программы, не удаляется - компилятор указывает на проблему в delete[]C;
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
void main()
 
{
    int n, x, k;
    int i = 0;
 
    printf("Enter the size of the array A:\n");
    scanf("%d", &n);
    printf("Enter the size of the array B:\n");
    scanf("%d", &x);
    
    // Задание размера и ввод массивов
    int *A = new int[n]; // Выделение памяти для массива
    printf("Enter the elements of array A:\n");
    for (i = 0; i < n; i++)
        scanf("%d", &A[i]);
 
    int *B = new int[x];
    printf("Enter the elements of array B:\n");
    for (i = 0; i < x; i++)
        scanf("%d", &B[i]);
    
    k = 0;
    int *C = new int[k];
        
    // Начало обработки массивов
    for (int i = 1; i < n; i++)
    if ((A[i] % 2 == 0) && (A[i - 1] % 2 != 0)) // Поиск четного элемента в A
    {
        C[k] = A[i];
        for (int j = i; j < n; j++)
            A[j] = A[j + 1];
        n = n - 1;
        k++;
    }
    
    printf("Changed array A: ");
    for (int i = 0; i < n; i++)
        printf("%2d", A[i]);
    printf("\n");
    printf("Resulting array C: ");
    for (int i = 0; i < k; i++)
        printf("%2d", C[i]);
    printf("\n");
    
    // Обработка массива B и C
    int min = B[0];
    for (i = 0; i < x; i++)
        if (B[i] < min)
            min = B[i];
    int max = B[0];
    for (i = 0; i < x; i++)
    if (B[i] > max)
        max = B[i];
    double median = (min + max) / 2;
    double delta = abs(median - min);
    int resID = 0;
    for (i = 0; i < x; i++)
        if (abs(median - B[i]) < delta)
        {
            resID = i;
            delta = abs(median - B[i]);
        }
    C[k] = B[resID];
    
    for (int j = resID; j < x; j++)
        B[j] = B[j + 1];
    x = x - 1;
    
    printf("Changed array B: ");
    for (int i = 0; i < x; i++)
        printf("%2d", B[i]);
    printf("\n");
    printf("Resulting array C: ");
    for (int i = 0; i <= k; i++)
        printf("%2d", C[i]);
    printf("\n");
    
    // Удаление памяти
    delete[]A;
    delete[]B;
    delete[]C;
    
    system("pause");
}
Если избавиться от строчки delete[]C;, программа компилируется и выполняется. В чем дело?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.12.2013, 22:29
Ответы с готовыми решениями:

Удаление динамического массива
доброго времени суток. написал программу, в которой создается динамический массив. с ним проводим определенные операции, а в конце надо его...

Удаление динамического массива
Доброго времени суток! Задача такова, что надо организовать бесконечный ввод в массив. Ввод прекращается после 0. Возникла проблема:...

Удаление динамического массива
Всем привет!!! Столкнулся со следующей проблемой. В литературе оговоренно, что для удаления всего массива из динамической памяти,...

5
118 / 110 / 78
Регистрация: 30.01.2013
Сообщений: 297
14.12.2013, 22:33
C++
1
2
 k = 0;
    int *C = new int[k];
0
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
14.12.2013, 22:35  [ТС]
А как исправить?
0
 Аватар для katsidelin
60 / 21 / 10
Регистрация: 15.11.2013
Сообщений: 112
Записей в блоге: 3
14.12.2013, 22:46
Цитата Сообщение от thejadefalcon Посмотреть сообщение
k = 0; int *C = new int[k];
Пустой указатель нельзя удалять, потому и не компилируется, на сколько я понял.
А во всякие ифы он и не дожен вникать, мало ли увеличится число элементов или нет.
Попробуйте заменить k с нуля на натуральное число и ретранслируйте код.

Добавлено через 6 минут
Цитата Сообщение от thejadefalcon Посмотреть сообщение
k = 0; int *C = new int[k];
Пустой указатель нельзя удалять, потому и не компилируется, на сколько я понял.
А во всякие ифы он и не дожен вникать, мало ли увеличится число элементов или нет.
Попробуйте заменить k с нуля на натуральное число и ретранслируйте код.

Также можно просто:
C++
1
int *C;
0
4 / 4 / 3
Регистрация: 20.06.2013
Сообщений: 35
14.12.2013, 22:49
Цитата Сообщение от thejadefalcon Посмотреть сообщение
k = 0;
int *C = new int[k];
пример из жизни: Начальник сказал подчиненым купить 0 мешков цемента и сказать ему где они находятся Понятное дело что невозможно указать на то, чего нету.
0
 Аватар для thejadefalcon
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 41
14.12.2013, 22:49  [ТС]
Спасибо, понял в чем проблема. Сейчас все работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2013, 22:49
Помогаю со студенческими работами здесь

Удаление динамического массива
Здравствуйте! Имеем код: #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; using namespace...

Удаление динамического массива
Создаю динамический массив целых чисел. Хотелось бы после его создания научиться удалять его, то есть освобождать память. #include...

Удаление динамического массива
Добрый день, уважаемые форумчане! Столкнулся со следующей проблемой, реализовал алгоритм перебора перестановок или размещений с...

Удаление динамического массива
Здравствуйте! Имею следующий вопрос: создаётся массив таким образом: int elCount = 10; double* x = new double;

Удаление динамического массива
есть динамический массив: double** Mas2 = new double*; for(int i=0;i&lt;=kol2;i++) Mas2=new double; Как удалить данный массив...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru