Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2010, 17:31   #1
Buddy_Guy
 
Регистрация: 26.05.2009
Сообщений: 5
По умолчанию Динамический ввод массива (без ввода размера)

С виду не головоломка, но пока ничего подобного не найду.
Используя динамическую память , Надо ввести массив (хоть одномерный - всё равно), НЕ ЗАДАВАЯ его размер. Т.е. ввод закончить "пустым" нажатием Enter.
Buddy_Guy вне форума Ответить с цитированием
Старый 07.10.2010, 18:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

STL библиотеку использовать можно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2010, 18:50   #3
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

malloc + realloc
MaTBeu вне форума Ответить с цитированием
Старый 08.10.2010, 11:29   #4
Buddy_Guy
 
Регистрация: 26.05.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
STL библиотеку использовать можно?
да, можно...

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
malloc + realloc
вы меня не поняли. это понятное дело, что для работы с динамической памятью надо использовать malloc + realloc или (лучше) new + delete, НО суть в том, что во всех примерах (что я делал сам и видел на форумах\в справочниках\учебниках) надо интерактивно задавать размер, а уж потом вводить; у меня же задача НЕ задавая размер массива просто вводить массив, сразу генерируя новые ячейки памяти, а при "пустом" нажатии Enter закончить ввод.
на экране это выглядит так:
-----------------------------
Введите х[0] = 2
Введите х[1] = 3
Введите х[2] =
<Тут я нажимаю Enter>
Массив х (2 элемента) = 2 3
-----------------------------

Вот такая петруха должна получиться...

Последний раз редактировалось Stilet; 08.10.2010 в 13:04.
Buddy_Guy вне форума Ответить с цитированием
Старый 08.10.2010, 13:19   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
да, можно...
Ну тогда запросто:
Код:
#include "stdafx.h"
#include <list>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    list<int> l;
    int i=0;
    for(cin>>i;i;cin>>i){
        l.push_back(i);
        cout<<"Next please... ";
    }
    cout<<'\n';int k=1;
    for(list<int>::iterator i=l.begin();i!=l.end();i++){
        cout<<k++<<" element = "<<(int)*i<<'\n';
    }
    cout<<'\n';system("pause");
    return 0;
}
единственное что я не помню как в iostream выяснить нажат ли энтер без ввода чего либо.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2010, 21:57   #6
Buddy_Guy
 
Регистрация: 26.05.2009
Сообщений: 5
По умолчанию

Stilet, спасибо, сейчас буду разбираться.. с <list> не сталкивались ещё. вроде что-то подобное я со списками видел...

Stilet, а всё же интересно без STL библиотеки как...

Последний раз редактировалось Stilet; 09.10.2010 в 22:15.
Buddy_Guy вне форума Ответить с цитированием
Старый 09.10.2010, 22:15   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
без STL библиотеки как...
Понятия не имею, я Дельфиец.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2010, 23:52   #8
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,336
По умолчанию

2Buddy_Guy
Цитата:
вы меня не поняли. это понятное дело, что для работы с динамической памятью надо использовать malloc + realloc или (лучше) new + delete, НО суть в том, что во всех примерах (что я делал сам и видел на форумах\в справочниках\учебниках) надо интерактивно задавать размер
это ты ничо не понял. вводишь счетчик, изначально он 0. спрашиваешь пользователя, вводим или где. она нажимает да, увеличиваешь счетчик, делаешь маллок. опять спрашиваем, вводим или где. увеличиваешь счетчик и делаешь реаллок. при реалооке старая память сохраняется. и тд. изначально размер массива не задаешь. вот и все.

но ИМХА ты просто не понял задания, и тебе нужно реализовать обычный связанный список
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 10.10.2010, 22:22   #9
Buddy_Guy
 
Регистрация: 26.05.2009
Сообщений: 5
По умолчанию

pproger, на самом деле, вопрос возник при выполнении задания, которое как раз по спискам (очередь).
Надо создать функции для реализации очереди (элементы которой структуры типа

struct Data
{
int x;
Data * pNext;
};
):
- добавление с середины,
-удаление с середины,
- вывод очереди.
приоритет в сторону с наибольшим числом элементов.

с массивом вопрос возник, когда разбирался с вводом
Buddy_Guy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ - изменение размера массива kefir Помощь студентам 1 19.06.2010 11:42
способы ввода массива Алексей Долгов Помощь студентам 0 24.05.2010 19:51
определение размера массива maksim_serg Microsoft Office Excel 1 29.03.2010 07:00
Изменение размера динамического массива налету Zeraim Общие вопросы Delphi 12 26.07.2009 14:23
Замена статического массива на динамический Славный Общие вопросы Delphi 1 11.06.2008 00:19