|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
||||||
Строки02.08.2008, 15:08. Показов 5370. Ответов 24
Метки нет (Все метки)
Приветствую Вас, братья и сёстры. У меня возникла проблемка с простой задачкой из книжки госпожи Павловской. Вот она: написать программу, которая считывает текст из файла и выводит на экран только предложения, содержащие введённое с клавиатуры слово.
У меня было два варианта решения этой задачи, но после быстрого вымирания моих нервных клеток, первый вариант я отбросил, а вот пример второго:
Добавлено через 1 час 10 минут я нашёл, где может быть глюк (у меня): fin.read(buf, len); наверно после этого указатель становится в самом конце файла, но даже если после этой строки я напишу fin.seekg(0, ios::beg); ничего не меняется...
0
|
||||||
| 02.08.2008, 15:08 | |
|
Ответы с готовыми решениями:
24
Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||||||
| 02.08.2008, 15:34 | ||||||
|
Я писал под линухом, поэтому я тебя может отличаться чуть. И выводит она строки. С предложениями разберешься сам, правда ведь?
![]()
0
|
||||||
|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
|
| 02.08.2008, 15:39 [ТС] | |
|
спасибо конечно большое, но вся проблема, что надо предложения выводить. если есть предложение, как это сделать, не записывая при этом файл в массив, то я выслушаю. Со строками проблем нет
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 02.08.2008, 15:50 | |
|
Ищи смвол конца предложения: точку, восклицательный, вопросительный знаки. А потом через strcpy копируй. Вперед.
Добавлено через 8 минут Тут я тя весьма забавно. предложение же может быть на нескольких строках. Поэтому если символ не нашелся, то надо читать следующую строку и следующую, пока не найдешь. Причем, массив не нужен. Зачем? В текущей строке есть совпадение - вывели ее (начиная с последнего знака перед словом). Если не нашли знака конца предложения после совпадения - считали новую строку, если и там его нет - то выводим ее. Простой цикл получается.
0
|
|
|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
|
| 02.08.2008, 16:17 [ТС] | |
|
а если стихотворение? может нашлось слово на строке так пятой после начала предложения.
ну ладно, я конечно могу на столько упростить, но тогда совсем по-детски получается Добавлено через 21 минуту короче, даже если я избегу этого гемороя, то дальше мне всё равно понадобятся знания вот этого: fin.read(buf, len); fin.seekg(0, ios::beg); установит ли он позицию на начала файла? У меня не устанавливает, тогда как это сделать?
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 02.08.2008, 16:57 | |
|
Я, кстати, вообще не понял зачем ты эти все буфера делал, зачем на конец файла перепрыгивал... Все это лишнее. Хотя, кому как удобнее.
0
|
|
|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
|
| 02.08.2008, 17:59 [ТС] | |
|
вот мне, например, надо знать, какой следующий знак, буква, цифра идёт после найденного мною, как это сделать, если только у тебя весь текс не является массивом, тогда ты можешь обратиться к каждому элементу текста. Может в этом задании не так это сильно востребовано, но вот в следующем это очень упростит задачу...
Так всё таки, как насчёт моего вопроса
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 02.08.2008, 18:17 | |
|
Госпади, да все он нормально устанавливает. Ты установил на начало. Потом читаешь буфер. После того, как ты считал буфер указатель у тебя где? Вооот. Будь внимательней.
0
|
|
|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
|
| 02.08.2008, 18:23 [ТС] | |
|
я же знаю, что не нормально, я написал обычный код, где от просто все подряд строки выводит, что-то похожее на твой, только без поиска. Там мой buf никак не используется, но если я ставлю fin.read, то он у меня ничего не выводит, а если убираю его, то всё работает.
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 02.08.2008, 18:28 | |
|
Да не выводит он потому что после read у тебя указатель в опять конце! Я же написал...
0
|
|
|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
||
| 02.08.2008, 18:29 [ТС] | ||
|
так я же пишу, что с помощью fin.seekg(0, ios::end); я его ставлю в начало, ибо в книге написано, что так надо делать, но он не ставится
0
|
||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 02.08.2008, 18:32 | |
|
Ну если и после не помогает, то не имею никакого понятия, как это сделать. У меня все работает. Попробуй возвращаемое значение проверить. Оно там вроде должно быть.
0
|
|
|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
|
| 02.08.2008, 18:34 [ТС] | |
|
гы, даже стыдно уже спрашивать: а по конкретней с предыдущим предложением, я слегка не понял...
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 02.08.2008, 18:38 | |
|
Ну функция должна возваращать значение, которое даст понять: удачно она завершилась, или нет. Для этой вроде -1 в случае неудачи. Если память не изменяет. Или по фалагам failbit, badbit. Не, вроде, все-таки, по флагам
0
|
|
|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
|
| 02.08.2008, 18:40 [ТС] | |
|
и куда это втыкнуть надо...
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 02.08.2008, 18:46 | |
|
Блин, давай немного сам будешь разбираться, а? Используй fail() у потока.
0
|
|
|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
|
| 02.08.2008, 18:58 [ТС] | |
|
тоесть если я напишу
fin.getline(line, sizeof(line)) ; if (fin.fail()) cout << "хрен" << endl; то если ошибка, то мне хрен выведет? он его выводит
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 02.08.2008, 19:06 | |
|
Если выводит, значит ошибка. Теперь проверяй сами биты. Проверь eof, проверь bad.
0
|
|
|
74 / 74 / 1
Регистрация: 02.08.2008
Сообщений: 107
|
|
| 02.08.2008, 19:10 [ТС] | |
|
короче, позиция у меня в конце файла... чтоб эту Павловскую с её задачами...
спасибо за помощь, в сентябре у препода спрошу... не надо мучаться, я на это дело забил, пойду дальше...
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 02.08.2008, 19:12 | |
|
Это самое плохое решение
Ну да ладно.Добавлено через 50 секунд Кинь сюда код итоговый. Где у тя там позиция в конце...
0
|
|
| 02.08.2008, 19:12 | |
|
Помогаю со студенческими работами здесь
20
Переписать все строки файла удаляя пробелы в конце каждой строки Как первые два символа строки переставить в конец этой строки? Как считать строки из файла, если там больше одной строки? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает
Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|