Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

неогранниченный размер массива в С. Как это реализовать?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
goga0881



Зарегистрирован: 14.04.2005
Сообщения: 21

СообщениеДобавлено: Вт Июл 19 2005 17:36    Заголовок сообщения: неогранниченный размер массива в С. Как это реализовать? Ответить с цитатой

Всем привет!

Программа, которая печатает самую длинную строку из всех введенных, но при этом заранее неизвестно длина строки, т.е. не существует ограничения на размер введеннй строки. Короче длина массива определяется после того, как в него прочитан некий поток символов, а точнее строка. Надеюсь постановка более ясна на этот раз. Оговорюсь, задача дана после того, как рассматривается ввод вывод getchar()-ом и putchar()-ом + понятие символьных массивов. Ни о каких malloc-ов и alloc-ов речь не идет.

Всем спасибо


Последний раз редактировалось: goga0881 (Чт Июл 21 2005 07:59), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Ср Июл 20 2005 10:24    Заголовок сообщения: Ответить с цитатой

Во-первых, массив неограниченного размера не бывает, он ограничен размером виртуальной памяти. Во-вторых, динамически менять размер массива можно, если он динамически выделен, с помощью функции realloc. В-третьих, вообще вопрос не совсем понятен...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
September



Зарегистрирован: 14.11.2004
Сообщения: 109
Откуда: Saint-Petersburg

СообщениеДобавлено: Вт Июл 26 2005 11:31    Заголовок сообщения: Re: неогранниченный размер массива в С. Как это реализовать? Ответить с цитатой

Могу конечно путать, но неограниченный по размеру массив - это список, не так ли?
Классов в С нет, но есть указатели и структура.
Это если я правильно опнял вопрос, то копаем здесь.

Готов принять критику, т.к. могу быть не прав.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Вт Июл 26 2005 12:32    Заголовок сообщения: Ответить с цитатой

Да нет. Можно с помощью realloc изменять длину массива, правда при этом он может переместиться, поэтому старые ссылки на него стаунут недействительны...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Вт Июл 26 2005 14:46    Заголовок сообщения: Ответить с цитатой

Kefir писал(а):
Во-первых, массив неограниченного размера не бывает, он ограничен размером виртуальной памяти. ...


кхм...поправочка маленьчкая...
Вы апсолютно правы, если речь идёт о сях, и под форточками.
Но (!) НЕ правы, если речь идёт о фортране (например) и досе. В нём мона...
1) Выделить массив на рантайме. То бишь определить в процессе выполнения (ну сишников этим не напугать)...
2) Выделить ГОРАЗДО больше чем есть физической памяти (даже статически). (предвидя Ваши замечания про виртуал память продолжу) При этом программа скомпилирована ЧИССО под MSDOS и успешно под ним запускаеться и работает Smile

удачи Вам
(круглый)
ЗЫ
Честно говоря - в низ фортран по данному поводу не копал - посему направление механики ХЗ. Возможно и свой аля свопинг. Экзешник может кстати быть больше оперативки...
==================
ЗЫ ЗЫ
приношу извинения...
там речь только о СЯХ шла...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ihor



Зарегистрирован: 28.07.2005
Сообщения: 1

СообщениеДобавлено: Чт Июл 28 2005 11:08    Заголовок сообщения: Re: неогранниченный размер массива в С. Как это реализовать? Ответить с цитатой

а зачем всё держать в памяти -- сбрасывйте строку в файл на диске, или более интеллектуально - заводим стат. массив, пишем туда строку, если не помещается, переключаемся на запись в файл. т.о. и получается, что-то вроде организации виртуальной памяти.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Artur



Зарегистрирован: 18.01.2005
Сообщения: 13

СообщениеДобавлено: Пт Июл 29 2005 22:18    Заголовок сообщения: Ответить с цитатой

Совершенно верно пишет September. Здесь однозначно нужен Объектно ориентированный список (ну в более сложном случае Хэш - Таблица) Во встроенной библиотеке STL уже есть готовая структура типа список написанная программистами Microsoft - List, но я бы рекомендовал написать свой список, и здесь как мне кажется подойдет лучше односторонний. Если это сделать то получиться максимально компактная и быстрая прога, которая будет по минимуму расходовать память.
Если интересно напиши и я разъясню если чего непонятно.
P.S. Вообще вопрос мне кажется неординарный ? =) Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Wladimir



Зарегистрирован: 02.03.2005
Сообщения: 150
Откуда: Ставропольский край

СообщениеДобавлено: Сб Июл 30 2005 08:50    Заголовок сообщения: Ответить с цитатой

Почему бы просто не использовать std :: string или std :: vector.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...