2 / 2 / 2
Регистрация: 11.10.2016
Сообщений: 123
1

Рекурсивное изменение размера массива

07.02.2019, 20:35. Показов 705. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
int* resize_array(int* arr, int count_arr, int i)
{
    if (i < count_arr)
    {
        arr = (int*)realloc(arr, i * sizeof(int));
        resize_array(arr, count_arr, i + 1);
    }
 
    return arr;
}
При дальнейшей работе с элементами массива, возникает ошибка.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2019, 20:35
Ответы с готовыми решениями:

Изменение размера массива
Допустим в main-е я объявил указатель определенного типа и создал переменную int size, затем адрес...

Изменение размера массива
Как без использования функций изменить размер массива? int x=10; int m1; int m2; int m3; iny...

Изменение размера массива
Здравствуйте. Я хочу написать массив в который записываются введенные данные. Массив должен...

Изменение размера массива
Задача такая: нужно добавить в массив элемент так что бы он стоял в начале массива или...

5
"C with Classes"
1645 / 1402 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
07.02.2019, 20:48 2
Цитата Сообщение от Elllik Посмотреть сообщение
i + 1
не i - 1?

Добавлено через 1 минуту
что такое i? на сколько увеличить?

Добавлено через 18 секунд
или новый размер
0
2 / 2 / 2
Регистрация: 11.10.2016
Сообщений: 123
07.02.2019, 20:52  [ТС] 3
Цитата Сообщение от _stanislav Посмотреть сообщение
не i - 1?
count_arr - новый размер массива, i -вспомогательная переменная
0
"C with Classes"
1645 / 1402 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
07.02.2019, 21:05 4
Elllik, не уверен на счет realloc но вот
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
#include <cstdlib>
#include <cstdio>
 
int* resize_array(int* arr, int count_arr, int i = 1)
{
    if (i < count_arr)
    {
        arr = (int*)realloc(arr, i * sizeof(int) );
        resize_array(arr, count_arr, i += 1);
    }
 
    return arr;
}
 
int main()
{
    int size = 5;
    int* arr = (int*)malloc(size * sizeof(int) );
 
    for (int i = 0; i < size; ++i)
        arr[i] = i;
 
    for (int i = 0; i < size; ++i)
        printf("%d ", arr[i] );
 
    arr = resize_array(arr, 1000);
 
    for (int i = 0; i < size; ++i)
        printf("%d ", arr[i] );
 
    return 0;
}
Добавлено через 28 секунд
чета на большие размеры не расширяет
0
2 / 2 / 2
Регистрация: 11.10.2016
Сообщений: 123
07.02.2019, 21:10  [ТС] 5
Цитата Сообщение от _stanislav Посмотреть сообщение
чета на большие размеры не расширяет
C++
1
2
3
4
5
6
7
8
9
10
11
int* resize_array(int* arr, int count_arr, int i)
{
    if (i < count_arr)
    {
        arr = (int*)realloc(arr, i * sizeof(int));
        i++;
        resize_array(arr, count_arr, i);
}
 
    return arr;
}
Этот вариант работает
0
"C with Classes"
1645 / 1402 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
07.02.2019, 21:16 6
Цитата Сообщение от Elllik Посмотреть сообщение
Этот вариант работает
то же самое

Добавлено через 2 минуты
resize_array(arr, 10000, 1); попробуй вызвать функцию так
0
07.02.2019, 21:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2019, 21:16
Помогаю со студенческими работами здесь

Изменение размера массива
Подскажите плиз, как на С++ изменить размер массива, есть например int *pi = new int; А...

Изменение размера динамического массива
вводится числовой массив неизвестной длинны, каждое число заносится в динамический массив. using...

Изменение размера массива в конструкторе
Создайте класс matrix полем класса будет массив 10 на 10. Конструктор должен позволять программисту...

Изменение размера массива объектов класса с++
Доброго времени суток! Нужно динамически изменить размер массива объектов, когда пользователь хотел...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru