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

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

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

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

05.12.2008, 22:35. Просмотров 7554. Ответов 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;
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2008, 22:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Инициализация динамического массива (C++):

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

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

Инициализация динамического массива - C++
Создан динамический массив (при помощи функций). Пробую инициализировать при помощи фигурных скобок.:umnik: #include &quot;stdafx.h&quot; ...

Инициализация динамического массива - 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;...

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

Инициализация двумерного динамического массива - C++
Как задать численные значения элементам двумерного динамического массива при его инициализации? int n=2; double **a; ...

10
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];
0
zzzmaz
0 / 0 / 0
Регистрация: 18.11.2008
Сообщений: 2
06.12.2008, 06:03 #3
Если я правильно понял твою проблему, могу посоветовать поступить следующим образом: создаём динамический массив большего размера (что-бы реально хватило) заполняем его, пока не встретится число 98, потом создаём ещё один динамический массив, равный длине последней заполненной ячейке первого массива, копируем в него все данные из первого, первый убиваем.
0
Prividenie
74 / 74 / 6
Регистрация: 05.10.2008
Сообщений: 233
06.12.2008, 13:06 #4
удалил его (сообщение свое)
0
StarWorm
17 / 16 / 4
Регистрация: 20.11.2008
Сообщений: 81
06.12.2008, 21:00 #5
Или кидай не в массив, а в вектор (vector) push_back() и все будет пучком
0
blackswan
13 / 13 / 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 и указатель получал своё значение, а мне нужно именно так.
0
niXman
Эксперт С++
3139 / 1451 / 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) {
1
blackswan
13 / 13 / 0
Регистрация: 08.07.2009
Сообщений: 61
26.10.2009, 13:12 #8
большое спасибо, это ,именно, то, что мне нужно. я как-бы имею представление об адресации и передаче параметров, но вот такое хитрое *& как-то забыл, а почему Вы советуете через имя функции? у меня был такой вариант, но я не хотел его делать, мне удобнее так, к тому же у меня такой массив не один.
0
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
26.10.2009, 13:14 #9
Цитата Сообщение от blackswan Посмотреть сообщение
а почему Вы советуете через имя ссылки?
Через результат функции. Передача указателя по ссылке, не самая лучшая идея. Вносит путаницу.

Цитата Сообщение от blackswan Посмотреть сообщение
к тому же у меня такой массив не один.
Т.е. функция возвращает несколько массивов?
0
blackswan
13 / 13 / 0
Регистрация: 08.07.2009
Сообщений: 61
26.10.2009, 13:30 #10
да, несколько, работа с ними аналогично этому, просто в примере решил узнать за один случай.
0
niXman
Эксперт С++
3139 / 1451 / 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;
}
0
26.10.2009, 13:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2009, 13:55
Привет! Вот еще темы с ответами:

Инициализация двумерного Динамического массива - C++
У меня вопрос. Могу ли я создать двумерный динамический массив и инициализировать его своими значениями в коде программы. #include...

Обьявление и инициализация динамического двумерного массива в классе - C++
Пытаюсь создать в классе динамический двумерный массив, не могу понять что я делаю не так( При вызове деструктора - ошибка class...

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива - C++
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++...

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива - C++
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++ ...


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

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

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