Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамический символьный массив 
V
    Опции темы
Metalex
Дата 24.11.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Задан динамический символьный массив. Нужно записать в другой массив только те строки, которые встречаются впервые, т.е. каждую строку, начиная со 2-рой нужно сравнить с предыдущими и в случае, если она отличается от них, записать в результирующий динамический массив. Можно ли обращатся к строкам в массиве напрямую, чтоб использовать strcmp? Или прийдется каждую строку сравнивать поэлементно? Подкиньте идеи решения.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
jonie
Дата 25.11.2009, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



мы понятия не имеем что такое "динамический символьный массив" и что вы считаете "строкой", так что никто не сможет вам ответить на ваш вопрос. Описывайте ситуацию (с примерами кода) более подробно.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Metalex
Дата 25.11.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



j l k 5 l 9 k
; k ; 9 l k l
[ ; j j u h l

Пусть это массив. 
Тогда:

j l k 5 l 9 k
строка.


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
siew
Дата 25.11.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 17.11.2009

Репутация: нет
Всего: нет



Человек наверное имеет ввиду массив строк. А под динамическим я так понимаю, что этот массив во время выполнения программы может меняться, т.е. может удаляить либо добавлять строки. Правильно? smile

Добавлено через 8 минут и 54 секунды
Единственную проблемму которую я тут вижу, это правильное определение этого массива. Если мы пока что забудем , что он динамический , то можно определить его как скажем массив строк:

sntring str[10] = {"aaa", "bbb", и т.д.}  (нужно посмотреть точно как записываються строки, потому что могу не помнить)

либо мы можем определить  его как массив указателей на строки

char chA[] = "aaa";
char chB[] = "bbb";
char chC[] = "ccc"; и т.д.

char Massiv[] = {chA, chB, chC  и т.д.}
PM MAIL   Вверх
xvr
Дата 25.11.2009, 18:11 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Metalex @ 24.11.2009,  22:39)
Задан динамический символьный массив. Нужно записать в другой массив только те строки, которые встречаются впервые, 
Подкиньте идеи решения.

Идея - берем std::map<std::string,int> и считаем в нем количество вхождений каждой строки из 1го массива. Затем обходим то, что насчитали, и выводим во 2й массив строки со счетчиком равным 1

PM MAIL   Вверх
djamshud
Дата 26.11.2009, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Можно сделать так, как вы хотите (сравнивать все строки с предыдущими), но с оптимизацией: сравнивать не строки, а их хеши (и если хеши совпадают, то сами строки). Работать будет быстро. Если на производетельность плевать, смело сравнивайте строки.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Carlos0N
Дата 28.11.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 9.10.2007

Репутация: нет
Всего: 1



xvr, думаю главным смыслом этого задания является понять как работать с массивами строк, т.е. понять саму суть реализации работы с ними, а не использовать контейнерные скласы

djamshud, каким образом вы хотите хештровать строки? мне просто интересно))
PM MAIL ICQ   Вверх
djamshud
Дата 28.11.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



>каким образом вы хотите хештровать строки? мне просто интересно)) 

Я - никаким. А каким будет это делать топикстартер, если решит воспользоваться идеей, - не знаю. Если я правильно понял, он не просил написать код.

А что вызвало ваше веселье? Мне просто интересно)). Наверное кому-то в этом топике следует подучить матчасть.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Carlos0N
Дата 28.11.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 9.10.2007

Репутация: нет
Всего: 1



я не пытался посмеятся над вами, видимо )) - эти две скобочки были лишними))
у меня просто глупая привычка везде их ставить, так позитивней имхо))

я и не просил код, просто я так понял вы знаете как это сделать. начал думать как бы захешировать строки, но какого то эффективного алгоритма сразу не придумал, поэтому и спросил.

мир, дружба, жвачка? =)
PM MAIL ICQ   Вверх
djamshud
Дата 28.11.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Сложите все или часть байтов строки - вот и простейший хэш. Можно еще примешать позицию символа в строке. Что-то более сложное и качественно распределяющее хеши для разных строк можно погуглить или прочитать в учебниках по всяким криптографиям.

От плохих привычек принято избавляться;).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.