Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mh-coder
-4 / 26 / 3
Регистрация: 01.02.2014
Сообщений: 809
#1

Увеличить размерность массива - C++

11.04.2014, 23:27. Просмотров 358. Ответов 5
Метки нет (Все метки)

Короче такая проблема, есть массив с данными, нужно увеличить его размерность, вроде написал всё правильно, но выскакивает ошибка Debag error и тд, вот код, подскажите что я делаю нетак

C++ (Qt)
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
#include <iostream>
using namespace std;
 
int increase_int_array(int *get_array,int array_len) {
 
    if(array_len = 1) {
//если длина массива= 1 значи он до этого был пустой и перезаписыать данные ненужно
        delete[]get_array;
        get_array = new int[array_len];
    }else{
 
    int *time_array = new int[array_len-1];
//создаем временный указатель на массив
    for (int i = 0; i < array_len-1; i++)
    {
        *(time_array+i) = *(get_array+i);
    }
//копируем в него данные
    delete[]get_array;
//удаляем массив
int *get_array = new int[array_len];
    for (int i = 0; i < array_len-1; i++)
    {
        *(get_array+i) = *(time_array+i);
    }
 
//записываем всё обратно
 
    }
    return 0;
}
 
void main()  {
    
 
 
    int array_len = 0;
    int *good_array = new int[array_len];
//создаем указатель на массив
 
 
    for (int i = 0; i < 10; i++)
    {
        
            array_len++;
// увеличиваем размер
            increase_int_array(good_array,array_len);
//перезаписываем массив с новым размером
            *(good_array+i)=i;
 
        
    }
 
 
    system("pause");
 
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 23:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Увеличить размерность массива (C++):

Как увеличить размерность массива? - C++
В процессе отладки программы появилась необходимость увеличить массивы, объявленные ниже, на 4 элемента. Можно ли это сделать в первом и...

Считывание элементов массива из файла, где в первой строке можно задавать размерность массива - C++
Разработать программу для работы с одномерным массивом. Ее функции: - считывание элементов массива из файла (txt), где в первой строке...

Размерность массива в классе - C++
Как нужно переписать массив в классе, чтобы пользователь мог задавать размерность этого массива вместо фиксированных D и MAX, которые...

Как хранить размерность массива? - C++
Здравствуйте. Мне нужно решить задачу: template &lt; class T, size_t N&gt; std::size_t length(const T (&amp;)) { return N; }; ...

Как поменять размерность массива? - C++
Здравствуйте! Я пытаюсь решить одну задачу, но у меня нет мыслей, как действовать... когда я дохожу к тому, что нужно поменять размерность...

Как определить размерность массива - C++
Есть такая задача : Найти общие элементы 2-х массивов и записать результат в файл. Как определить размерность 3-го массива , в...

5
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.04.2014, 23:39 #2
C++
1
int increase_int_array(int *& get_array,int array_len)
0
mh-coder
-4 / 26 / 3
Регистрация: 01.02.2014
Сообщений: 809
12.04.2014, 00:39  [ТС] #3
серовно ошибка
0
Миниатюры
Увеличить размерность массива  
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.04.2014, 01:02 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от mh-coder Посмотреть сообщение
серовно ошибка
Отладчиком пользоваться умеете? Найдите, в каком месте кода ошибка.

Добавлено через 2 минуты
C++
1
if(array_len = 1)
Это не сравнение, а присваивание.

Добавлено через 8 минут
Цитата Сообщение от mh-coder Посмотреть сообщение
int *get_array = new int[array_len];
И не нужно, в функции, новый указатель объявлять. Просто:
C++
1
get_array = new int[array_len];
Добавлено через 3 минуты
Память под time_array нужно освобождать (в конце функции).

Добавлено через 5 минут
Но лучше так:
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
int increase_int_array(int *&get_array,int array_len)
{
    if(array_len == 1) 
    {
//если длина массива= 1 значи он до этого был пустой и перезаписыать данные ненужно
        delete[]get_array;
        get_array = new int[array_len];
    }
    else
    {
 
    int *time_array = new int[array_len];
//создаем временный указатель на массив
    
    for (int i = 0; i < array_len-1; i++)
    {
        *(time_array+i) = *(get_array+i);
    }
//копируем в него данные
    delete [] get_array;
//удаляем старый массив
    get_array = time_array;
// адрес нового массива присваиваем get_array
    
    }
    return 0;
}
1
mh-coder
-4 / 26 / 3
Регистрация: 01.02.2014
Сообщений: 809
12.04.2014, 16:33  [ТС] #5
мм, точно спасибо, а как понимать эту запись int *& get_array ? а именно интересует *&, зачем тут &
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.04.2014, 16:43 #6
Цитата Сообщение от mh-coder Посмотреть сообщение
именно интересует *&, зачем тут &
Ссылка на указатель. Если без неё, то в функцию передаётся копия указателя (передача по значению). В функции значения указателя меняется (присваивается адрес нового массива), если передана копия, то такое изменение никак не коснётся оригинала (который в main()).
1
12.04.2014, 16:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2014, 16:43
Привет! Вот еще темы с ответами:

Правильно задать размерность массива - C++
unsigned char phrase = &quot;XАXАXАXАX&quot;; unsigned char to_display; В массиве phrase буква А - русские в utf-8. по два байта на...

В с++ нельзя изменять размерность массива? - C++
Читаю книжку по с++, тут написано что у массивов в отличии от векторов нельзя менять размерность... Я в VisualBasic'е точно знаю можно...

Максимальная размерность статического массива - C++
Добрый день! У меня появилась проблема. Мне по ходу курсового проекта нужно заводить двумерные массивы большой размерности (например,...

Заполнение массива: нулевой элемент, размерность - C++
Приветствую. Немного запутался с этими массивами, разъясните, пожалуйста, ситуацию. Код: void GradeBook::outputBarChart() { ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru