|
1 / 1 / 0
Регистрация: 11.03.2009
Сообщений: 107
|
||||||
Черезстрочное слияние30.09.2009, 21:53. Показов 3828. Ответов 33
Метки нет (Все метки)
Появилось вот такое задание по C++:
Написать программу на языке C++ чересстрочного слияния (т.е. первая строка в выходном файле - это первая строка из первого файла, вторая строка в выходном файле - это первая строка из второго файла, третья строка в выходном файле - вторая строка из первого файла и т.д.) двух текстовых файлов с удалением в каждой строке слов после которых стоит любой знак препинания. Алгоритм программы:
0
|
||||||
| 30.09.2009, 21:53 | |
|
Ответы с готовыми решениями:
33
Слияние массивов Слияние строк Бинарное слияние |
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
||||||
| 09.10.2009, 15:00 | ||||||
|
Код C++
1 2 3 4 5 6 7 while (c=fgetc(f1)) { fputc(c,o); if (c==EOF) fputc('\n',o); if (c=='\n') break; }; Как окончательный вариант предлагаю такое решение. Разберись в нём и протестируй. Раз за разом мы будем в цикле считывать символы и их печатать, ни о чем не боеспокоясь. Пока нам не встретится EOF или \n Допустим, нам встретился EOF То есть последней строкой в файле была такая строка : asdfgh"EOF" asdfgh нами считано. И надо добавить в конес строки \n (хотя его там нет, надо самим пихать.) Вот пихаем. Пишем Код C++ 1 2 3 if (c==EOF) fputc('\n',o); И всё на этом. Теперь мы уже НИКОГДА не зайдём в это цикл, согласись? А если считаем знак \n, то просто тупо запишем его в файл и всё, по команде break выходим на хрен из цикла. И так для обоих файлов. Но тут есть одно. Если будет, допустим, так asdfg\nEOF Значит, произойдёт так: Считается строка, потом \n. Вроде всё нормально. Теперь бы нам выйти их цикла, ан нет. Прога опять зайдёт в цикл, сразу же наткнётся на EOF и прибавит \n, который нам даром не нужен. Получается в конце два \n Значит что? Значит, если в конце EOF, то пусть символ \n прописывается не безусловно, а только в том случае, если предыдущий прописанный сивол НЕ БЫЛ \n То есть вот сюда
Если предыдущий считанный символ не был \n Вот подумай, как это реализоватью.
1
|
||||||
|
1 / 1 / 0
Регистрация: 11.03.2009
Сообщений: 107
|
||||||
| 09.10.2009, 15:25 [ТС] | ||||||
по теории если правильно понял о чем ты работает... на практике без проблем дочитывает до конца первого файла, но как только конец первого файла был достигнут... вниз пошли буквы 'я' причем в огромном кол-ве... выходной файлик получился аж на 10 метров...
0
|
||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
||||||
| 09.10.2009, 16:25 | ||||||
|
Я тебе сказал протестировать. А не паниковать.
Уж мог бы разобраться-то хоть немного! Извини, конечно. Пиши так.
Попробуй взять а правило выводить данные в консоль сперва, а потом уже в файл Всегда видно, портачишь или нет. Но это так, на будующее.
1
|
||||||
|
1 / 1 / 0
Регистрация: 11.03.2009
Сообщений: 107
|
|||||||||||||||||
| 09.10.2009, 16:56 [ТС] | |||||||||||||||||
|
file_1.txt
0
|
|||||||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
||||||
| 09.10.2009, 17:36 | ||||||
|
Тогда семафор. Разбирайся.
1
|
||||||
|
1 / 1 / 0
Регистрация: 11.03.2009
Сообщений: 107
|
|||||||
| 09.10.2009, 22:20 [ТС] | |||||||
|
Исходники те же, теперь в месте конца первого и продолжения второго все ОК, но далее опять появляются пустые строки
0
|
|||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
||||||
| 09.10.2009, 23:11 | ||||||
|
Кошмар.
Я совсем забыл, что семафор на то и семафор, чтобы его изменять! Моя вина. Вот вариант. Должен сканать. Если сканает, мы его в четырёх местах украсим.
1
|
||||||
|
1 / 1 / 0
Регистрация: 11.03.2009
Сообщений: 107
|
|
| 09.10.2009, 23:43 [ТС] | |
|
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
|||||||||||
| 10.10.2009, 00:00 | |||||||||||
|
А мы объединим просто, чтобы строек меньше было.
Вместо 17-ой и 18-ой напиши так:
Надо препода задобрить. И вот втором цикле аналогичные строчки объедини.
1
|
|||||||||||
|
1 / 1 / 0
Регистрация: 11.03.2009
Сообщений: 107
|
|
| 10.10.2009, 13:29 [ТС] | |
|
kravam, спасибо за помощь...
Что можешь посоветовать дальше?? Попытаться соединить вот эту часть с твоей прогой, и в ней уже со знаками препинания исправлять, или вообще заново начать делать??
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
|
| 10.10.2009, 13:53 | |
|
Лучше заново.
0
|
|
|
1 / 1 / 0
Регистрация: 11.03.2009
Сообщений: 107
|
|||||||||||
| 10.10.2009, 19:59 [ТС] | |||||||||||
|
вот программка она читает из файла, и выводит на экран, и выделяет слова если найден знак препинания...
И потом происходила запись в файл?? Практиковался на вот таком файлике
0
|
|||||||||||
|
4219 / 3417 / 396
Регистрация: 15.06.2009
Сообщений: 5,817
|
||||||
| 10.10.2009, 22:38 | ||||||
|
Не утерпел...
Всё это - хорошая иллюстрация того, что происходит, когда начинают кодировать без проекта и внятного алгоритма. Увязли в мелочах, а решения нет А задача простая. Разрабатываем проект сверху вниз. Файлы - вход1, вход2, выход Цикл Пока вход непуст { ОбработатьСтроку(вход1, выход) ОбработатьСтроку(вход2, выход) } ОбработатьСтроку(вход, выход) { СтрокаИсточник = ЧитатьСтроку(вход) СтрокаРезультат = ПреобразоватьСтроку(СтрокаИсточник) ЗаписатьСтроку(выход, СтрокаРезультат) } ПреобразоватьСтроку(Источник) { Результат = "" Цикл Пока Источник непуст { Слово = ЧитатьСлово(Источник) Если Проверить(Слово) { Добавить(Результат, Слово) } } } ЧитатьСлово(Источник) { Пропустить пробелы Читать символы до пробела или конца строки } bool Проверить(Слово) { результат = истина Если { Последний символ(Слово) = знак препинания результат = ложь } } Добавить(Результат, Слово) { Если Результат непуст дописать пробел Дописать Слово }
1
|
||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
|
| 11.10.2009, 04:20 | |
|
Вот чё я не люблю, так это когда мы, неумёхи чего-то там делаем, и у на чего-то вдруг получилось- приходит эдакий мэтр, давно вальяжно на нас смотрящий, и знающий ответ и говорит...
мэтр, а где ты раньше был, когда мы пурхались в самом начале? а не пойти ли тебе куда подальше? Без тебя разберёмся. Мне-то по фиг, я задачу всяко решу (и решил уже сто раз разными способами). Я просто решаю её ВМЕСТЕ с автором. Секёшь масть?
0
|
|
| 11.10.2009, 04:20 | |
|
Слияние массивов Слияние массивов на с++ слияние списков Слияние массивов Слияние деревьев Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|