Как правильно работать с массивами
Я новичек изучаю C++
У меня такой вопрос: как сначала вычеслить размер массива а потом его создать с вычесленным размером? int tmp = 2; const int tmp2 = tmp; int tmp3[tmp2]; Вроде все логично но компилятор ругается :cry: Что делаю не правильно? |
Здесь:
http://www.cplusplus.com/doc/tutorial/arrays.html или здесь: http://www.augustcouncil.com/~tgibson/tutorial/arr.html На что компилятор и какой ругается??? |
Может, инициализации константы через переменную ему не нравится?
|
Busla,
Может, здесь все хорошо const int tmp2 = tmp; А вот здесь он ругается что ожидает константу(tmp2) int tmp3[tmp2]; |
Цитата:
PHP код:
Тоесть вообще бы убрал объявление: PHP код:
|
Дело в том что я незнаю размера своего массива.
Я должен вычеслить его размер, а потом про инициализировать массив с вычесленным размером и я не могу понять как это зделать. 1. Вычеслить размер могу. Заношу размер в tmp; 2. Размер массива должен быть константой, могу обьявляю const int tmp2 = tmp; 3. Обьявляю массив int tmp3[tmp2]; //и здесь компилятор ругается говорит что ожидает константное выражение tmp2 не пойму разве это не так? Я ж выше обьявил его константой. |
oRaVeNo, компилятор какой????
Вы смотрели примеры объявления массивов в гугле? И сообщение об ошибке в оригинале приведите... |
Drongo, oRaVeNo, инициализирован - значит содержит значения.
Размерность массива должны быть известна на момент компиляции. Нужно либо выделять память под массив динамически и работать с указателями. Либо, коли речь идёт о C++, пользоваться стандартными библиотеками - там хватает средств для работы с множествами. |
Цитата:
|
Глянь, можен пригодится, я такие варианты тебе набросал... Зачем его (размер) вычислять если у вас он в переменной tmp - тоесть - 2. Просто для вычисления будущих размеров используйте эту переменную - tmp. Только уберите строку
Код:
const int tmp2 = tmp; Код:
int tmp3[tmp2]; // а здесь смените вместо tmp2 на tmp; int tmp3[tmp]; Код:
#include <iostream.h> |
Большое спасибо всем разобрался.
Оказывается нужно динамически выделять память. Я так понял что компилятор не высчитывает размер, а ему он нужен сразу вот в чем моя ошибка. |
Подскажите пожалуйста как из массива e[6]={0.7,1,1.2,1.6,2.1,2.2} с помощью функции rand() выбрать случайно только одно значение?
пробовала вот так: E1=rand()%e[6]; а оно пишет: Illegal use of floating point. что делать, подскажите!!!!!!! Очень срочно надо!!! |
Цитата:
Код:
#include <iostream.h> |
Цитата:
Если же надо сначала ввести (в запущенной программе) значение tmp,*а потом создать массив, нужно использовать динамические массивы, которые создаются совсем иначе. В большинстве сред разработки уже есть классы-шаблоны для безопасной работы с динамическими массивами. Например vector из библиотеки STL или DynamicArray из Borland C++ Builder |
Время: 13:13. |
Время: 13:13.
© OSzone.net 2001-