Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |  |
Не мог бы ты указать в какой главе именно? 29.08.01 18:54 Число просмотров: 869
Автор: Даун Статус: Незарегистрированный пользователь
|
Забавно не в плане "супердинамических массивов" конечно, а в создании имен переменных "на лету"
Вероятно, сие возможно тока в интерпретаторах - Perl eval(), Python exec() и т.п.
А как это планируется в C++ - слабо представляется.
такое как //char *massiv+i;// не слопает компилятор, какие бы там операторы не перегружались.
Если же это возможно - интересно взгянуть!
|
|
<programming>
|
Супер динамическое выделение памяти под массив 28.08.01 17:14
Автор: dinamo Статус: Незарегистрированный пользователь
|
char *mas;
mas=new chat[SIZE];
это как вы понимаите мы просто динамически выделели размер массива
а мне необходимо кроме этого выделить динамически и имя массива
имена скажем такого плана massiv0, massiv1, massiv2, massiv3, massiv4, massiv5, massiv6
что то подобное можно сделась в VB (как мне кажется) ну а как насчет С/Visual С++
схематический текст программы
cin>>x;
for(int i=0;i<x;i++)
{
char *massiv+i;
massiv+i=new char[SIZE];
}
возможно ли такой ???
|
 |
Вопрос на засыпку всем знатокам с++ (более правельная формулировка вопроса) 28.08.01 23:48
Автор: dinamo Статус: Незарегистрированный пользователь
|
схематически это должно выглядить так
i=0;
cin>>x;
if(x)break;
massiv+i;//тут у него название massiv1
...
i++;
cin>>x;
if(x)break;
massiv+i;//тут у него название massiv2
i++;
...
cin>>x;
if(x)break;
massiv+i; //тут у него название massiv3
i++;
...
т.е. программа в любой момент может завершится и число динамических массивов точно неизвестно
т.е. необходим ПРИНЦИП ФОРМИРОВАНИЯ ИМЕН ПЕРЕМЕННЫХ ИЛИ МАССИВОМ
чтобы их имена состояли из 2-х частей 1)ИМЯ 2)ЧИСЛО
т.е. massiv1, massiv2, massiv3, massiv4
ну так как такая задача решима или нет???
|
 |  |
Вопрос на засыпку не знатоку с++ 30.08.01 01:19
Автор: kabanchik Статус: Незарегистрированный пользователь
|
2 All :
Приколисты хреновы ;-)))
атору :
а можешь объяснить зачем тебе "динамическая" переменная и как ты ее применять будешь, т.е. с чем и как ты ее "есть" собираешься? типа -
if (exist(massive_X))
do_something();
else
do_anything();
---
приблизительно такое получается что ли?
если сумеешь ответить на вопрос и объяснишь каким образом ты ее использовать будешь, то будь уверен, что найдутся 1000, которые тут же приведут тебе 1000 примеров. объясни механизм "if (exist(massive_X))".
посторайся понять чего тебе надо.
P.S. не обижайся конечно, но это не вопрос на засыпку. это даже не вопрос, а скорее всего анекдот.
2 XR:
того кто создал ВАСИК пристрелить надо. народу мозги мутит.
|
 |  |  |
Все-таки этому есть применение - в компиляторах. 30.08.01 07:04
Автор: Бяша <Biasha> Статус: Member
|
|
|
 |  |
Да. У Страуструпа в книге даже как часть примера. 29.08.01 02:35
Автор: Бяша <Biasha> Статус: Member
|
|
|
 |  |  |
Не мог бы ты указать в какой главе именно? 29.08.01 18:54
Автор: Даун Статус: Незарегистрированный пользователь
|
Забавно не в плане "супердинамических массивов" конечно, а в создании имен переменных "на лету"
Вероятно, сие возможно тока в интерпретаторах - Perl eval(), Python exec() и т.п.
А как это планируется в C++ - слабо представляется.
такое как //char *massiv+i;// не слопает компилятор, какие бы там операторы не перегружались.
Если же это возможно - интересно взгянуть!
|
 |  |  |  |
Не мог бы ты указать в какой главе именно? 30.08.01 07:09
Автор: Бяша <Biasha> Статус: Member
|
3.1.3 Таблица имен
Короче там, где про калькулятор. Он ещё долго потом улучшает в следующих главах.
> А как это планируется в C++ - слабо представляется. > такое как //char *massiv+i;// не слопает компилятор, какие > бы там операторы не перегружались. > Если же это возможно - интересно взгянуть!
Ну, я имел в виду нечто такое:
#include <iostream.h>
struct CName { int a; };
int& operator+(CName &name, int a){ return name.a; }
int main()
{
int i = 1;
CName name = {2};
name+i = 3; // о чём я собственно и говорил
cout << "i="<< i << " name.a=" << name.a;
return 0;
} ---
В класс можно добавить ещё char* и поля next, prev. Плюсиком по ним какой-то поиск делать, и выдавать нужный инт.
|
 |  |  |
ну а более конкретно??? 29.08.01 10:54
Автор: dinamo Статус: Незарегистрированный пользователь
|
|
|
 |  |
Может я и не большой знаток... 29.08.01 01:07
Автор: Хунтер Статус: Незарегистрированный пользователь
|
|
После того, как твоя прога на сипипи откомпилится, никакихименпеременных в ней не останется. Слова "massiv" ты в ней не найдешь, поэтому сама проблема динимического выделения переменнымименнесостоятельна. Забудь ты васик, тут все по-другому. Делай как тебе XR написал.
|
 |
;))) 28.08.01 17:59
Автор: XR <eXtremal Research> Статус: The Elderman
|
> char *mas; > mas=new chat[SIZE]; > это как вы понимаите мы просто динамически выделели размер > массива > а мне необходимо кроме этого выделить динамически и имя > массива > имена скажем такого плана massiv0, massiv1, massiv2, > massiv3, massiv4, massiv5, massiv6 > что то подобное можно сделась в VB (как мне кажется) ну а > как насчет С/Visual С++ > схематический текст программы > cin>>x; > for(int i=0;i<x;i++) > { > char *massiv+i; > massiv+i=new char[SIZE]; > } > возможно ли такой ???
Чаво токо не услышишь от пионеров_и_школьников подсевших на ВАСИК :)))
char** array=new char* [x];
for(int i=0;i<x;i++)
array[i] = new char [SIZE];
обращаться к массиву так:
array[i][j];
|
 |
Ну ты сравнил!!! VB и VC ;-)))))))))))))))))))))))). 28.08.01 17:24
Автор: Glory <Mr. Glory> Статус: Elderman
|
> что то подобное можно сделась в VB (как мне кажется) ну а > как насчет С/Visual С++ > схематический текст программы > cin>>x; > for(int i=0;i<x;i++) > { > char *massiv+i; > massiv+i=new char[SIZE]; > } > возможно ли такой ??? Ты представляешь что при этом получится? Во-первых когда ты пишешь имя_одной_переменной + имя_другой, получается сумма их значений а не конкатенация имен ;-))))). поэтому char *massiv+i; - вообще ахинея которую компилер не пропустит. massiv+i = new char[SIZE]; тоже не прокатит, при определенных усилиях конечно можно заставить нечто подобное работать, только результат будет такой, что лучше б он не работал ;-))). Фактически память размером size выделится под указатель на область памяти, начинающуюся с адреса [massiv+i];А что получится в результате - догадайся сам ;-)).
P.S. я конечно понимаю что смех продлевает жизнь, но не надо так больше меня смешить ;-))).
|
 |  |
Ну уж нет..! 29.08.01 02:45
Автор: Бяша <Biasha> Статус: Member
|
> > что то подобное можно сделась в VB (как мне кажется) > ну а > > как насчет С/Visual С++ > > схематический текст программы > > cin>>x; > > for(int i=0;i<x;i++) > > { > > char *massiv+i; > > massiv+i=new char[SIZE]; > > } > > возможно ли такой ???
> Ты представляешь что при этом получится? Во-первых когда ты > пишешь имя_одной_переменной + имя_другой, получается сумма > их значений а не конкатенация имен ;-))))). поэтому char Не факт...
Например, он определит сложение имени с интом, выдающее ссылку на что-то.
> P.S. я конечно понимаю что смех продлевает жизнь, но не > надо так больше меня смешить ;-))). Конечно это всё глупость, но заставить это работать (даже правильно работать) можно! :)
|
 |  |  |
Ну уж нет..! 29.08.01 11:47
Автор: Glory <Mr. Glory> Статус: Elderman
|
> Не факт... > Например, он определит сложение имени с интом, выдающее > ссылку на что-то. Я имел ввиду в общем случае, понятно можно "+" пергрузить чтоб он че угодно там делал.
> > > P.S. я конечно понимаю что смех продлевает жизнь, но > не > > надо так больше меня смешить ;-))). > Конечно это всё глупость, но заставить это работать (даже > правильно работать) можно! :) Так я и сказал что заставить это работать можно. Только работать это будет так, что лучше б не работало вообще.
|
 |  |
Ну ты сравнил!!! VB и VC ;-)))))))))))))))))))))))). 28.08.01 18:48
Автор: 1 Статус: Незарегистрированный пользователь
|
смейся смеяся!!!
просто тебе надо быть более внимательным при прочтении вопроса.
это был не просто текст программы.
а как там сказанно " схематический текст программы "
и я прекрасно понимал что она даже близко в таком виде работать не будет!!!
надеюсь ты понимаеш разницу !!!???
|
 |  |  |
Ни @#$а себе схемка!! ;-)). Посмотри то что тебе XR накатал и сравни со своей схемой. Похоже? ;-)). 28.08.01 19:55
Автор: Glory <Mr. Glory> Статус: Elderman
|
> и я прекрасно понимал что она даже близко в таком виде > работать не будет!!! Так нахрена такая схема, если она даже близко работать не будет? Если она не верна в корне ((c) В. И. Ленин). XR тебе написал правильное решение твоей проблемы, но дело в том, что с твоей схемой оно ничего общего не имеет. Поэтому я и смеялся столько ;-))))))). Более разумным было бы с твоей стороны вообще не предлагать никаких схем а просто задать вопрос.
|
|
|