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

Cоздание неизвестное заранее количество переменных - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Jоker
 Аватар для Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 18:46     Cоздание неизвестное заранее количество переменных #1
Здравствуйте. Как осуществить создание неизвестное заранее количество переменных?
Например пользователь вводит число k, а программа создает k переменных.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2012, 18:46     Cоздание неизвестное заранее количество переменных
Посмотрите здесь:

Cоздание простой игры C++
C++ Сколько выделить памяти, если заранее неизвестно количество вложенных классов
C++ как захватить динамически память, не зная заранее какое количество памяти надо?
как сделать неизвестное количество вложенных циклов C++
C++ Как передать в функцию заранее неизвестное число параметров?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.01.2012, 18:47     Cоздание неизвестное заранее количество переменных #2
Динамический массив aka vector
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
20.01.2012, 18:48     Cоздание неизвестное заранее количество переменных #3
C++
1
2
3
4
5
6
7
8
9
10
11
#include <ctime>
#include <iostream>
 
main ()
{
   srand(time(NULL));
   int k = rand() % 25;
   for (int i = 0; i < k; i++)
       cout << rand();
   system("PAUSE > NULL");
}
Если надо записать в массив то:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstdlib>
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    srand(time(NULL));
    int k = rand()%25;
    cout << "k = " << k << endl;
    int a[k];
    for (int i = 0; i < k; i++)
       a[i] = rand() % 100;
    for (int i = 0; i < k; i++)
        cout << a[i] << " ";
    system("PAUSE > NULL");
    return EXIT_SUCCESS;
}
Jоker
 Аватар для Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 18:48  [ТС]     Cоздание неизвестное заранее количество переменных #4
Цитата Сообщение от diagon Посмотреть сообщение
Динамический массив aka vector
Можно пример?
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 18:51     Cоздание неизвестное заранее количество переменных #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <vector>
#include <iostream>
 
int main()
{
   size_t count = 0;
   std::cin >> count;
   
   std::vector<int> array(count);
 
   for(size_t i = 0; i < count; ++i)
     std::cin >> array[i];
   return 0;
}
как то так.
Jоker
 Аватар для Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 18:53  [ТС]     Cоздание неизвестное заранее количество переменных #6
Цитата Сообщение от dimcoder Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
#include <ctime>
#include <iostream>
 
main ()
{
   srand(time(NULL));
   int k = rand() % 25;
   for (int i = 0; i < k; i++)
       cout << rand();
   system("PAUSE > NULL");
}
Это же просто вывод случайных чисел. Или я что-то не понимаю?
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
20.01.2012, 18:59     Cоздание неизвестное заранее количество переменных #7
Цитата Сообщение от Jоker Посмотреть сообщение
Это же просто вывод случайных чисел.
Да. Но ниже то я написал другой код, который записывает случайные числа в массив случайного размера.
Jоker
 Аватар для Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 19:07  [ТС]     Cоздание неизвестное заранее количество переменных #8
Цитата Сообщение от dimcoder Посмотреть сообщение
Да. Но ниже то я написал другой код, который записывает случайные числа в массив случайного размера.
Выводит ошибку: Ошибка 2 error C2057: требуется константное выражение
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
20.01.2012, 19:09     Cоздание неизвестное заранее количество переменных #9
там int a[k]; меняешь на int* a = new int[k];
Jоker
 Аватар для Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 19:20  [ТС]     Cоздание неизвестное заранее количество переменных #10
А нельзя сделать так чтобы они были именно переменными, а не массивом?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.01.2012, 19:23     Cоздание неизвестное заранее количество переменных #11
Jоker, а вам, собственно говоря, на этапе выполнения какая разница?
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
20.01.2012, 19:23     Cоздание неизвестное заранее количество переменных #12
Цитата Сообщение от Jоker Посмотреть сообщение
А нельзя сделать так чтобы они были именно переменными, а не массивом?
Массив - это и есть множество переменных. (Я сейчас конкретно про с++ не говорю, т.к. массив в с++ - это указатель всего лишь)
Jоker
 Аватар для Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 19:27  [ТС]     Cоздание неизвестное заранее количество переменных #13
C++
1
int* a = new int[k];
объясните пожалуйста эту строчку
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.01.2012, 19:28     Cоздание неизвестное заранее количество переменных #14
Jоker, создаётся указатель на int и инициализируется адресом начала свежевыделенного блока памяти размером k * sizeof(int).
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
20.01.2012, 19:29     Cоздание неизвестное заранее количество переменных #15
Цитата Сообщение от Jоker Посмотреть сообщение
объясните пожалуйста эту строчку
new - выделение данамической памяти. После использования не забудьте освободить эту память:
C++
1
delete [] a;
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.01.2012, 19:32     Cоздание неизвестное заранее количество переменных #16
Jоker, в Си есть возможность создания массива переменной длины. Но это к слову. Лучше выделить сколько необходимо памяти динамический.
Jоker
 Аватар для Jоker
4 / 4 / 0
Регистрация: 12.12.2011
Сообщений: 107
20.01.2012, 19:34  [ТС]     Cоздание неизвестное заранее количество переменных #17
Цитата Сообщение от go Посмотреть сообщение
Лучше выделить сколько необходимо памяти динамический.
не совсем понял
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
20.01.2012, 19:36     Cоздание неизвестное заранее количество переменных #18
Цитата Сообщение от go Посмотреть сообщение
Jоker, в Си есть возможность создания массива переменной длины.
можно пример ???
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.01.2012, 19:37     Cоздание неизвестное заранее количество переменных #19
Melkor, полагаю, речь идёт про С99, а именно var-length arrays.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 19:39     Cоздание неизвестное заранее количество переменных
Еще ссылки по теме:

Cоздание двумерного динамического массива C++
Неизвестное количество переменных в функции C++
Неизвестное количество строк в двумерном массиве C++

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.01.2012, 19:39     Cоздание неизвестное заранее количество переменных #20
Цитата Сообщение от Melkor Посмотреть сообщение
можно пример ???
http://ru.wikipedia.org/wiki/C99
http://liveworkspace.org/code/b8ec73...079fe39b1dd280

Добавлено через 1 минуту
Цитата Сообщение от silent_1991 Посмотреть сообщение
полагаю, речь идёт
Да
Yandex
Объявления
20.01.2012, 19:39     Cоздание неизвестное заранее количество переменных
Ответ Создать тему
Опции темы

Текущее время: 07:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru