![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
LerokSA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.5.2010 Репутация: нет Всего: нет |
помогите, пожалуйста:
вот смотрите такая задача: Написать программу, которая считывает текст из файла и выводит на экран предложения, содержащие максимальное количество знаков пунктуации. можете подсказать, в каком диапазоне лежат знаки пунктуации?? ![]() |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 9 Всего: 211 |
Добавлено через 50 секунд LerokSA Дополни список знаков пунктуации. |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
azesmcar, красиво, но не правильно.
1. выводится только одно предложение, если даже предложений с одинаковым количеством знаков больше одного 2. происходит постоянное перераспределение памяти, из-за того, что используется vector. 3. весь файл загоняется в оперативную память, что неприемлемо для больших файлов мой вариант:
Это сообщение отредактировал(а) ИванМ - 14.6.2010, 20:52 |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 9 Всего: 211 |
а автору предложения надо только что заметил, всего один символ, а как меняется смысл ![]()
vector можно заменить на list или раз так волнует оптимизация заранее выделить память под 100-200 объектов, чтобы не было перераспределения, но это ведь домашнее задание, а не олимпиада по программированию. Скажем так, для маленьких файлов я бы о всех этих пунктах вообще не задумывался, чем проще и читабельнее код - тем лучше. А про большие файлы ничего не говорилось. В вашем варианте есть ошибка в логике выполнения. вот тут допустим при первом же входе в цикл cnt = 0, max_p = 0, ни одного знака пунктуации в предложении нет, но оно все равно заноситься в список.
можно например как-то так... Это сообщение отредактировал(а) azesmcar - 14.6.2010, 21:19 |
||||||
|
|||||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
ИванМ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
По-моему, все логично. Что если во всех предложениях нет ни одного знака пунктуации? На счет вашего нового варианта - красота безукоризненна, но вот производительность... Ладно, плюнем на память и производительность)) Еще как вариант:
Это сообщение отредактировал(а) ИванМ - 14.6.2010, 23:03 |
||||
|
|||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
Вот еще неплохой вариант. С памятью лучше работает и проще.
Это сообщение отредактировал(а) ИванМ - 15.6.2010, 00:17 |
|||
|
||||
LerokSA |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.5.2010 Репутация: нет Всего: нет |
всё это, конечно, здорово)) спасибо, но половину кода я не поняла ^^
можете пояснить,
и
я на Си еще не работала особо с конструкторами и векторами.. мне просто еще блок-схему по коду писать, а я понятия не имею КАК с векторами это делать О_0 поэтому можете комментарии оставить или упростить код хоть как-то? ну пожаааааааааааалуйста ![]() |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 9 Всего: 211 |
Dov
Надо же, не знал про такую функцию ![]()
ладно, скажем так - в первом предложении нету знаков пунктуации, а во втором их 12. Все равно первое будет занесено в список. чтобы найти все максимальное, сперва надо найти максимальное значение, а потом взять все равные ему. Ну или хранить все предложения для каждого числа знаков пунктуации, как сделал я. а вы не работу с памятью сравнивайте а сложность алгоритмов. я кстати тоже, в Си векторов нет ![]() комментарии позже добавлю. |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 9 Всего: 211 |
так пойдет? |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 9 Всего: 211 |
а что, нехватка? о таких вещах надо думать тогда, когда это действительно важно, а не просто так, оптимизация ради оптимизации не имеет никакого смысла.
ах да, только заметил. Это сообщение отредактировал(а) azesmcar - 15.6.2010, 13:54 |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
Но, согласитесь, писать изначально универсальный код с точки зрения производительности и экономии памяти хорошее дело. Вот из-за этого убеждения ваш код неэффективен с точки зрения экономии оперативной памяти. Есть еще вариант - сохранять текущие максимальные значения и потом их удалять по мере появления нового максимума. Но, с точки зрения краткости кода, соглашусь, что ваш код лучше. Хотя, если подумать, ни ваш ни мой вариант под текущую задачу (программа для студента) не подходит, потому что они не изучали STL и преподаватель вряд ли примет. Но наше дело написать правильный код, а все остальное уже дело не наше ![]() Это сообщение отредактировал(а) ИванМ - 15.6.2010, 15:01 |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 9 Всего: 211 |
естественно, если это не влияает на качество и читабельность кода ![]()
это тоже не наше дело если быть откровенным, но когда не лень мы закрываем на это глаза в разделе "Центр помощи". Это сообщение отредактировал(а) azesmcar - 15.6.2010, 15:12 |
||||
|
|||||
LerokSA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.5.2010 Репутация: нет Всего: нет |
я в курсе вообще-то |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |