|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
||||||
Реализация своей функции getline12.10.2015, 09:08. Показов 23643. Ответов 57
Метки нет (Все метки)
Здравствуйте! Не могу решить задачку.
Постановка: Реализуйте функцию getline, которая считывает поток ввода посимвольно, пока не достигнет конца потока или не встретит символ переноса строки ('\n'), и возвращает C-style строку с прочитанными символами. Обратите внимание, что так как размер ввода заранее неизвестен, то вам нужно будет перевыделять память в процессе чтения, если в потоке ввода оказалось больше символов, чем вы ожидали. Память, возвращенная из функции будет освобождена оператором delete[]. Символ переноса строки ('\n') добавлять в строку не нужно, но не забудьте, что в конце C-style строки должен быть завершающий нулевой символ. Мой код:
В чем ошибка ? Консоль зависает после перехода на новую строку.
0
|
||||||
| 12.10.2015, 09:08 | |
|
Ответы с готовыми решениями:
57
Реализация getline Реализация функций getline Delim в функции getline() |
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
|||||||
| 16.10.2015, 10:01 [ТС] | |||||||
![]() Вот, что у меня получилось:
0
|
|||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 16.10.2015, 10:49 | |||||||
|
Ты все перепутал (источник с приемником, динамическую память с автоматической).
1
|
|||||||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
|||||||
| 16.10.2015, 15:32 [ТС] | |||||||
|
Сделал как вы говорили. Но теперь программа не видит переход на новую строку и поэтому требует бесконечный ввод.
0
|
|||||||
|
13 / 13 / 6
Регистрация: 29.09.2015
Сообщений: 38
|
||||||
| 16.10.2015, 15:48 | ||||||
1
|
||||||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
|||||||
| 16.10.2015, 16:20 [ТС] | |||||||
![]() Добавлено через 11 минут Многострадальная программа по работе с памятью наконец заработала. Но есть один нюанс - не проходит проверку. Пишет: Failed test #1. Time limit exceeded. Что из всего этого кушает так много времени ?
0
|
|||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 16.10.2015, 17:48 | |||||||
|
Вот для примера:
1
|
|||||||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
|||||||
| 18.10.2015, 22:37 [ТС] | |||||||
Где-то в другом месте кушается время.
0
|
|||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 18.10.2015, 23:03 | |||||||
|
JustForStudy, усложнил сильно. Проблема в этом.
Вставь туда в начало вот такие строки:
Подказка: дело в делении.
1
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 18.10.2015, 23:07 | |||||||
|
выделяйте сразу же приличный резерв. это позволит расширять данные без необходимости постоянно реалокать память. а если все таки резерва не хватило - тогда при последующем реалоке выделяйте сразу в два раза больше, чем требуется. это позволит быстро (с минимальным количеством реалоков) накопить достаточный для работы резерв. вообще так поступают стандартные std::vector/std::string смотрите в сторону:
что бы можно было вообще забыть про реалоки.
1
|
|||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||
| 18.10.2015, 23:16 | ||||||
|
JustForStudy,
Вот исправленный твой вариант. Не смотреть, если сам хочешь сделать ![]() Кликните здесь для просмотра всего текста
1
|
||||||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
||||||||||
| 18.10.2015, 23:32 [ТС] | ||||||||||
![]() Пока сделал так(все равно работает долго):
1
|
||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 18.10.2015, 23:39 | |||
![]() Добавлено через 42 секунды JustForStudy, и оставь в покое размер, что 40, что 1024 тут роли не играет. Не гадай - думай! Добавлено через 5 минут Используй оператор % для нахождения остатка.
1
|
|||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
|||
| 18.10.2015, 23:43 | |||
|
1
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 18.10.2015, 23:43 | ||
|
Кроме того, у тебя там ошибка в алгоритме, которая нарушает условие задачи:
1
|
||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
||||||||
| 19.10.2015, 06:20 [ТС] | ||||||||
|
В итоге получилось:
Failed test #1. Run time error: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Что это значит ?
0
|
||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 19.10.2015, 09:59 | ||
|
Вернись к варианту с 40 байтами.
1
|
||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
||
| 19.10.2015, 10:01 [ТС] | ||
|
Кликните здесь для просмотра всего текста
Failed test #1. Run time error:
*** glibc detected *** ./main: double free or corruption (out): 0x0000000001fce760 *** ======= Backtrace: ========= [0x46ffe2] [0x474bc7] [0x40094f] [0x4009ea] [0x4003db] [0x457e83] [0x400759] ======= Memory map: ======== 00400000-00521000 r-xp 00000000 ca:00 804455 /home/stepic/instances/master-plugins/arena/codejail-rl1a1cl8/main 00721000-00728000 rw-p 00121000 ca:00 804455 /home/stepic/instances/master-plugins/arena/codejail-rl1a1cl8/main 00728000-0073f000 rw-p 00000000 00:00 0 01fcc000-01fef000 rw-p 00000000 00:00 0 [heap] 7fd8f4258000-7fd8f4259000 rw-p 00000000 00:00 0 7fff13f8f000-7fff13fb0000 rw-p 00000000 00:00 0 [stack] 7fff13fff000-7fff14000000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 19.10.2015, 10:12 | ||
|
В resize в качестве старого должно подаваться строго столько, сколько было выделено до этого. А у тебя это нарушается.
1
|
||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
||||||||
| 19.10.2015, 10:43 [ТС] | ||||||||
Добавлено через 3 минуты
0
|
||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 19.10.2015, 10:46 | ||
|
JustForStudy, JustForStudy, Вставь вывод размеров (старые и новый) в функцию resize. Отлаживайся на маленьких приращениях, например, - 4. Отладь у себя, прежде чем постить код в систему.
Я могу сразу написать решение, но тогда ты ничему не научишься. Итак у тебя туго что-то идет. Главное - не гадай. Старайся понять что происходит. Добавлено через 2 минуты
1
|
||
| 19.10.2015, 10:46 | |
|
Какой правильный вызов у функции getline()? Третий аргумент функции sdt :: getline Отсутствуют экземпляры перегруженной функции getline
Использование функции в своей программе из своей dll Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|