|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
||||||
Реализация своей функции getline12.10.2015, 09:08. Показов 23954. Ответов 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
|
|||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 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
|
|||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 16.10.2015, 17:48 | |||||||
|
Вот для примера:
1
|
|||||||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
|||||||
| 18.10.2015, 22:37 [ТС] | |||||||
Где-то в другом месте кушается время.
0
|
|||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 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
|
|||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||||
| 18.10.2015, 23:16 | ||||||
|
JustForStudy,
Вот исправленный твой вариант. Не смотреть, если сам хочешь сделать ![]() Кликните здесь для просмотра всего текста
1
|
||||||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
||||||||||
| 18.10.2015, 23:32 [ТС] | ||||||||||
![]() Пока сделал так(все равно работает долго):
1
|
||||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 18.10.2015, 23:39 | |||
![]() Добавлено через 42 секунды JustForStudy, и оставь в покое размер, что 40, что 1024 тут роли не играет. Не гадай - думай! Добавлено через 5 минут Используй оператор % для нахождения остатка.
1
|
|||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||
| 18.10.2015, 23:43 | |||
|
1
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 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
|
||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 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
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 19.10.2015, 10:12 | ||
|
В resize в качестве старого должно подаваться строго столько, сколько было выделено до этого. А у тебя это нарушается.
1
|
||
|
1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 42
|
||||||||
| 19.10.2015, 10:43 [ТС] | ||||||||
Добавлено через 3 минуты
0
|
||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 19.10.2015, 10:46 | ||
|
JustForStudy, JustForStudy, Вставь вывод размеров (старые и новый) в функцию resize. Отлаживайся на маленьких приращениях, например, - 4. Отладь у себя, прежде чем постить код в систему.
Я могу сразу написать решение, но тогда ты ничему не научишься. Итак у тебя туго что-то идет. Главное - не гадай. Старайся понять что происходит. Добавлено через 2 минуты
1
|
||
| 19.10.2015, 10:46 | |
|
Какой правильный вызов у функции getline()? Третий аргумент функции sdt :: getline Отсутствуют экземпляры перегруженной функции getline
Использование функции в своей программе из своей dll Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|