Narod,podskazhite !!!!!!
Kak mne inizializirovati Array,esli ego ob'em budet opredelen ne s nachala, a uzhe v run-time..
T.e. zadaetsj Array, v kotorii polizovateli vvodit rjd chisel---skoliko?--nikto ne znaet,i kak ego togda opredeliti v nachale ??????
I esche......kak vigljditi programma zapisi elementov s cin v Array (nu, pri nalichenii uslovij vverxu) ?????
Daite sovet umnii,pozhaaaaaaaaaaaaaalluuuuuuuuuuuuuista,a???
Здравствуйте MonsterAG, Вы писали:
MAG>Narod,podskazhite !!!!!! MAG>Kak mne inizializirovati Array,esli ego ob'em budet opredelen ne s nachala, a uzhe v run-time.. MAG>T.e. zadaetsj Array, v kotorii polizovateli vvodit rjd chisel---skoliko?--nikto ne znaet,i kak ego togda opredeliti v nachale ?????? MAG>I esche......kak vigljditi programma zapisi elementov s cin v Array (nu, pri nalichenii uslovij vverxu) ????? MAG>Daite sovet umnii,pozhaaaaaaaaaaaaaalluuuuuuuuuuuuuista,a???
Если стандартную библиотеку использовать — то vektor... Если нет, то
проще всего мне на коду показать:
int arraysize=0;
cout<<"Ведите...";
cin>>arratsize;
char* array=new char[arraysize];
// Работа с амассивомfor (int i=0;i<arraysize;i++) ;// Делаем чего-нить delete[] array; // ЭТО ОЧЕНЬ ВАЖНО
Если нужен массив другого типа, то просто другой тип подставляешь...
Здравствуйте MonsterAG, Вы писали:
MAG>Narod,podskazhite !!!!!! MAG>Kak mne inizializirovati Array,esli ego ob'em budet opredelen ne s nachala, a uzhe v run-time.. MAG>T.e. zadaetsj Array, v kotorii polizovateli vvodit rjd chisel---skoliko?--nikto ne znaet,i kak ego togda opredeliti v nachale ?????? MAG>I esche......kak vigljditi programma zapisi elementov s cin v Array (nu, pri nalichenii uslovij vverxu) ????? MAG>Daite sovet umnii,pozhaaaaaaaaaaaaaalluuuuuuuuuuuuuista,a???
Спокойййствие,
Только Спокойййствииие!
Если размер массива определяется до ввода этого массива — то любой способ:
Если же во время ввода — значит, есть некоторое условие. Например, конец файла или специальный маркер.
Используем массив с динамическим размером.
std::vector<int> v; // пример стандартного вектора
// пример на си-рантаймconst q = 4; // квант выделения памятиint s = 0, c = q; // размер и резервint* p = malloc(c * sizeof(int));
cout << "Вводите числа. В конце введите Ctrl+Z, 0 либо не-число";
while(true)
{
if(cin.eof()) break; // конец файла; Ctrl+Zint i;
cin >> i;
if(cin.fail()) break; // не числоif(i == 0) break; // конец
// добавляем в вектор
v.insert(v.end(), i);
// добавляем в массивif(s == c)
{
c += q;
p = realloc(p, c * sizeof(int));
}
p[s++] = i;
}
К>Если же во время ввода — значит, есть некоторое условие. Например, конец файла или специальный маркер.
К>Используем массив с динамическим размером. К>
К>std::vector<int> v; // пример стандартного вектора
К>// пример на си-рантайм
К>const q = 4; // квант выделения памяти
К>int s = 0, c = q; // размер и резерв
К>int* p = malloc(c * sizeof(int));
К>cout << "Вводите числа. В конце введите Ctrl+Z, 0 либо не-число";
К>while(true)
К>{
К> if(cin.eof()) break; // конец файла; Ctrl+Z
К> int i;
К> cin >> i;
К> if(cin.fail()) break; // не число
К> if(i == 0) break; // конец
К> // добавляем в вектор
К> v.insert(v.end(), i);
К> // добавляем в массив
К> if(s == c)
К> {
К> c += q;
К> p = realloc(p, c * sizeof(int));
К> }
К> p[s++] = i;
К>}
К>
Da, vvod chisel v massiv prodolzhaetsj do tex por,poka ne budet vvedena tochka "." , no vsj realizachij proisxodit bez ispolizovanij STL (nu, iostream estestvenno iskluchaetsj) !!!!
Vse eto delo ,primerno dolzhno vigljdeti tak :
int input,counter;
while (cin >> input)
array[counter++]=input;
No, u menj eto ne idet.....
Mozhet, esche kto, che umnogo podskazhet,a ???????????????????????????? :(
MAG>Da, vvod chisel v massiv prodolzhaetsj do tex por,poka ne budet vvedena tochka "." , no vsj realizachij proisxodit bez ispolizovanij STL (nu, iostream estestvenno iskluchaetsj) !!!! MAG>Vse eto delo ,primerno dolzhno vigljdeti tak :
MAG>int input,counter; MAG>while (cin >> input) MAG>array[counter++]=input;
MAG>No, u menj eto ne idet..... MAG>Mozhet, esche kto, che umnogo podskazhet,a ????????????????????????????
Не пойму, почему ту не хочешь использовать контейнеры STL?! потоки ведь используешь...
А без них (без контейнеров этих) — либо свой класс писать, который в случае необходимости будет память перевыделять(об этом тебе уже писали) , либо сразу выделять память под массив заведомо большего размера, а после завершения ввода его обкарнать до нужного размера...
А вот если использовать все тот же std::vector, то все просто и красиво:
int input;
std::vector<int> array;
while ((cin >> input).good())
array.push_back(input);
Здравствуйте Bell, Вы писали:
B>Здравствуйте MonsterAG, Вы писали:
MAG>>Da, vvod chisel v massiv prodolzhaetsj do tex por,poka ne budet vvedena tochka "." , no vsj realizachij proisxodit bez ispolizovanij STL (nu, iostream estestvenno iskluchaetsj) !!!! MAG>>Vse eto delo ,primerno dolzhno vigljdeti tak :
MAG>>int input,counter; MAG>>while (cin >> input) MAG>>array[counter++]=input;
MAG>>No, u menj eto ne idet..... MAG>>Mozhet, esche kto, che umnogo podskazhet,a ???????????????????????????? :(
B>Не пойму, почему ту не хочешь использовать контейнеры STL?! потоки ведь используешь... B>А без них (без контейнеров этих) — либо свой класс писать, который в случае необходимости будет память перевыделять(об этом тебе уже писали) , либо сразу выделять память под массив заведомо большего размера, а после завершения ввода его обкарнать до нужного размера... B>А вот если использовать все тот же std::vector, то все просто и красиво: B>int input; B>std::vector<int> array; B>while ((cin >> input).good()) B> array.push_back(input);
V tom-to i prikol, chto toliko potoki i ispolizuutsj...:(
Здравствуйте MonsterAG, Вы писали:
MAG>>>int input,counter; MAG>>>while (cin >> input) MAG>>>array[counter++]=input;
MAG>>>No, u menj eto ne idet..... MAG>>>Mozhet, esche kto, che umnogo podskazhet,a ???????????????????????????? :(
MAG>V tom-to i prikol, chto toliko potoki i ispolizuutsj...:(
Откуда такое ограничение? Один хрен шаблоны из STL будут разворачиваться ровно настолько, насколько ты их используешь. И они не тянут за собой никаких DLL-ов.
Если же это какая-то задачка, то см. мой вариант. Просто выкини оттуда все упоминания о векторе.