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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.92
ghost113
Сообщений: n/a
#1

Инициализация динамического массива - C++

05.12.2008, 22:35. Просмотров 7392. Ответов 10
Метки нет (Все метки)

Прога генерирует случайные числа(1-100) выводит их, пока не встретится 98, сохраняя все в массиве. Но мне нужно очень, чтобы программа сама определяла память в массив, ибо это статический, а мне надо динамический, то есть чтоб само определяло, каков будет его размер. Пробовал, но что-то не получилось ((


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
#include <iostream>
#include <time.h>
 
using namespace std;
 
void main()
{
    const int SIZE = 1000;
    const int MIN = 1;
    const int MAX = 100;
 
 
    int arr[SIZE];
    int i,k;
    srand(time(NULL));
 
    for(i=0;i<SIZE;i++)
    {
      arr[i]=rand()%(MAX-MIN+1)+MIN;
      cout << arr[i]<<endl;
      if(arr[i]==98)
          break;
    }
        
    cin.get();
    
    for(k=(i-1);k>=0;k--)
    {
        cout << arr[k] <<" ";
    }
    cout << endl;
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2008, 22:35     Инициализация динамического массива
Посмотрите здесь:

Инициализация динамического массива - C++
int main() { int a, i = 0; int *array = new int ; std::cout &lt;&lt; &quot;Enter numbers &quot; &lt;&lt; std::endl; while(std::cin &gt;&gt; a) { i &lt;...

Инициализация динамического массива - C++
Народ, подскажите как сделать так что бы, можно было задать размер массива через консоль, а не в коде через const (Если можете - объясните,...

Инициализация Динамического массива - C++
Друзья просмотрите пожалуйста мой динамический массив правильно ли я его длясебястолковал #include&lt;iostream&gt; using namespace std; ...

Инициализация N-мерного динамического массива - C++
Добрый день. Возникла идея написать функцию, которая инициализировала n-мерный динамический массив, что бы не писать кучу вложенных...

Инициализация массива в классе - C++
OS: WinXP Compiler: VC++ 6.0 Извиняюсь, заранее за глупый вопрос, но тем не менее: Есть класс: class Table{ public: ...

Инициализация массива строк - C++
Здравствуйте! Подскажите, как можно инициализировать массив строковых констант неопределенного размера? Для инициализации массива...

Инициализация char массива - C++
Мне нужно объявить и инициализировать массив char'ов. К примеру, char *m_words={'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'}; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
05.12.2008, 22:38     Инициализация динамического массива #2
Воопервых main() всегда возвращает int.
Не устаю повторять ссылку http://www.research.att.com/~bs/bs_faq2.html#void-main
Во вторых, делай так. Проси пользователя ввести размер, а потом int* a=new int[size];
zzzmaz
Сообщений: n/a
06.12.2008, 06:03     Инициализация динамического массива #3
Если я правильно понял твою проблему, могу посоветовать поступить следующим образом: создаём динамический массив большего размера (что-бы реально хватило) заполняем его, пока не встретится число 98, потом создаём ещё один динамический массив, равный длине последней заполненной ячейке первого массива, копируем в него все данные из первого, первый убиваем.
Prividenie
74 / 74 / 6
Регистрация: 05.10.2008
Сообщений: 233
06.12.2008, 13:06     Инициализация динамического массива #4
удалил его (сообщение свое)
StarWorm
17 / 16 / 4
Регистрация: 20.11.2008
Сообщений: 81
06.12.2008, 21:00     Инициализация динамического массива #5
Или кидай не в массив, а в вектор (vector) push_back() и все будет пучком
blackswan
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 61
26.10.2009, 12:45     Инициализация динамического массива #6
у меня немного другая проблема, имеется массив float *array в функции main, размер которого я не знаю, а узнаю только в подфункции load, мне необходимо передать этот массив в функцию по ссылке, там задать ему размер, обработать его, и вернуть обратно его же (а не копию). Пишу так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
float *array;
int N;
...........
load(array,&N)
...........
return0;
}
void load(float *array, &N)
{
.............
cin << N;
array = (float *) malloc(N*sizeof(float));
for (int i=0;i<N;i++)
*(array + i)= /*некая информация*/
.............
}
однако указатель из функции не возвращается обратно, на выходе в main тот же указатель, что и был до этого. Я видел другие примеры передачи массивов по ссылке, но там до входа в функцию вызывался malloc и указатель получал своё значение, а мне нужно именно так.
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
26.10.2009, 12:57     Инициализация динамического массива #7
Цитата Сообщение от blackswan Посмотреть сообщение
void load(float *array, &N)
Нужно так:
C++
1
void load(float *&array, &N)
Добавлено через 47 секунд
Но лучше так:
C++
1
float* load(&N) {
blackswan
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 61
26.10.2009, 13:12     Инициализация динамического массива #8
большое спасибо, это ,именно, то, что мне нужно. я как-бы имею представление об адресации и передаче параметров, но вот такое хитрое *& как-то забыл, а почему Вы советуете через имя функции? у меня был такой вариант, но я не хотел его делать, мне удобнее так, к тому же у меня такой массив не один.
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
26.10.2009, 13:14     Инициализация динамического массива #9
Цитата Сообщение от blackswan Посмотреть сообщение
а почему Вы советуете через имя ссылки?
Через результат функции. Передача указателя по ссылке, не самая лучшая идея. Вносит путаницу.

Цитата Сообщение от blackswan Посмотреть сообщение
к тому же у меня такой массив не один.
Т.е. функция возвращает несколько массивов?
blackswan
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 61
26.10.2009, 13:30     Инициализация динамического массива #10
да, несколько, работа с ними аналогично этому, просто в примере решил узнать за один случай.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2009, 13:55     Инициализация динамического массива
Еще ссылки по теме:

Инициализация комплексного массива - C++
Подскажите как правильно проинициализировать элементы двухмерного комплексного массива. По заданию нужно чтобы с клавиатуры вводилась...

Инициализация двумерного массива - C++
Чет не понимаю на что возмущается компилятор... Заполняю как и заполнял раньше... char my_array; int x = 0; int t = 2; for(; x &lt; 2;...

Инициализация символьного массива - C++
Проблема в том, что выдает ошибку &quot;требуется выражение&quot; - непосредственно внутри конструктора при попытке присвоить символьному массиву...

Инициализация символьного массива - C++
Не получается инициализировать в программе символьный массив #include &lt;iostream&gt; using namespace std; struct names{ char...

Инициализация массива до main() - C++
Здравствуйте. Необходимо задать массив до функции main() используя циклы. Как это можно сделать? При попытке использовать циклы сразу...


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

Или воспользуйтесь поиском по форуму:
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
26.10.2009, 13:55     Инициализация динамического массива #11
blackswan, В общем решать тебе.
Я бы сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct result {
   float* arr1;
   float* arr2;
   int xsize;
   int ysize;
};
..
...
struct result* any_function() {
   struct result* result = new struct result;
   result.arr1 = ...
   result.arr2 = ...
   result.xsize = ...
   result.ysize = ...
   ...
   ...
   return result;
}
Yandex
Объявления
26.10.2009, 13:55     Инициализация динамического массива
Ответ Создать тему
Опции темы

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