![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Анисия |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Анисия Репутация: ![]() ![]() ![]() |
Добрый день, помогите решить задачу, есть файл со словами разделенных пробелом, вывести в новый файл все слова отличные от последнего. Первый файл я получила, читаю строки из него. А что дальше делать не знаю, или считать кол-во слов, или удалаять подстроку из строки.
|
![]() ![]() |
bura |
![]()
Сообщение
#2
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
Тебе надо найти последнее слово. Потом снова надо будет считывать строки из первого файла. А далее можно будет делать двумя способами.
1-й способ. Из считанной из первого файла строки выделяешь слова и сравниваешь их с последним словом. Если слово не равно последнему слову, то записываешь его во второй файл. Если равно последнему слову, то не записываешь во второй файл. И так до конца первого файла. 2-й способ. Ищешь в считанной из первого файла строке вхождение последнего слова. Если слово присутствует в строке, то удаляешь его из строки. Проверяешь строку до тех пор, пока все слова, одинаковые с последним, не будут удалены из строки. Потом строку записываешь во второй файл. Так поступаешь со всеми строками первого файла. |
Анисия |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Анисия Репутация: ![]() ![]() ![]() |
Делаю цикл обратный,
только не могу придумать как сделать условие чтоб выбиралось слово. |
maksimla |
![]()
Сообщение
#4
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 324 Пол: Мужской Реальное имя: maksim Репутация: ![]() ![]() ![]() |
может сделай так раз отделены слова пробелом то
ну както так я непроверял несмотрел -------------------- Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
|
Unconnected |
![]()
Сообщение
#5
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата program Lab3; uses crt; var f, g: text; y, x :string; i:integer; begin clrscr; assign(f,'C:\bp\bin\t.txt'); reset(f); writeln('Содержание файла <f>'); repeat readln(f, y); writeln(' ', y); until (eof(f)); close(f); end. Ты читаешь в переменную у и при следующей итерации затираешь предыдущее значение. Т.е. просто выводишь строки на экран, они нигде не сохраняются. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Unconnected |
![]()
Сообщение
#6
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Код var f:text; y,y2,y3,y4:string; a:integer; begin assign(f,'input.txt'); reset(f); repeat readln(f,y2); y:=y+y2+' '; until eof(f); close(f); delete(y,length(y),1); for a:=length(y) downto 1 do if y[a]=' ' then begin y3:=copy(y,a+1,length(y)-a); break; end; assign(f,'output.txt'); rewrite(f); for a:=1 to length(y) do if y[a]=' ' then begin y4:=copy(y,1,a-1); if not(y4=y3) then writeln(f,y4); delete(y,1,a); end; close(f); readln; end. Разбиение на слова самое примитивное, не обрабатываются пробелы перед/после дефиса и т.п. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
не обрабатываются пробелы перед/после дефиса и что за пробелы такие перед/после дефиса?.. ![]() Unconnected, а ты вообще проверяешь свои решения?.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
![]()
Сообщение
#8
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Вот простенькое решение. Учти, что я интерпретировал твои слова о том, что слова разделены только пробелами буквально (концы строк не разделяют слова). Если не нравится так - можно поговорить о том, как это исправить.
Программа годится для файлов _любой_ длины, но длина одного слова не должна превосходить длины строки (255). var -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Анисия |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Анисия Репутация: ![]() ![]() ![]() |
Спасибо большое за помощь, вот что у меня получилось.
Добавлено через 3 мин. Lapp спасибо за помощь, но два часа ковыряний сегодня у меня не прошли даром. ![]() |
Lapp |
![]()
Сообщение
#10
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
вот что у меня получилось. Это в высшей степени похвально)). Я немного причесал твою прогу (постарайся разобраться с правильным форматированием - это несложно) и написал несколько замечаний.... два часа ковыряний сегодня у меня не прошли даром. program Lab3; Но требуемым результатом пока не пахнет)). По-хорошему, (если уж хочешь наворотов,) нужно сделать что-то типа функции для чтения следующего слова из текста. Тогда вся программа будет состоять из двух проходов: первый раз до последнего слова, а второй с записью в выходной файл нужных слов. Преимущество моего варианта состоит в минимальности накладываемых ограничений. Вот встретится тебе в файле строка с количеством букв больше 255 - и что делать? Не обращай внимания на мое брюзжание)), делай как делается. Покажи, что получится еще через два часа.. ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Анисия |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Женский Реальное имя: Анисия Репутация: ![]() ![]() ![]() |
Правильно сказали, я не то совсем нахожу...... спасибо за подсказку
![]() |
Unconnected |
![]()
Сообщение
#12
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата не обрабатываются пробелы перед/после дефиса и что за пробелы такие перед/после дефиса?.. Unconnected, а ты вообще проверяешь свои решения?.. Насчёт дефиса - это я имел в виду, что если дать программе word - word например, то '-' будет считаться за слово. А решение я проверял. Входной файл: Цитата abc defg hig klm nopqr Выходной файл: Цитата abc defg hig klm Вот что не в строку пишет это да. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Lapp |
![]()
Сообщение
#13
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Насчёт дефиса - это я имел в виду, что если дать программе word - word например, то '-' будет считаться за слово. Я извиняюсь за излишние придирки, я хотел сказать, что то, что ты имеешь в виду называется в русском языке "тире" (хлеб - всему голова), а дефис соединяет два слова (как-то, сильно-пресильно) и никаких пробелов при нем в принципе быть не может. Правда, в обычном компьютерном тексте (txt) оба они как правило представлены одним символом (минусом), так что различимы только по контексту. Еще раз извиняюсь, я понимаю, что это форум не филологов..Думаю, то, что тире считается за отдельное слово - совершенно нормальное явление в тех условиях, которые приведены Анисией, так что извиняться тут не за что. А решение я проверял. И еще раз извиняюсь. Я что-то никак не могу врубиться в требования задачи: может ли в файле быть несколько строк? (Анисия, ответь, пожалуйста.) Я проверял на файле с неколькими строками, потому, наверное, и получил не то. Сам не знаю, почему я привязался к многострочным файлам.. наверное, потому, что одной строки в 255 символом слишком уж мало, чтоб носить гордое имя файла)).Ниже - реализация функции GetWord, о которой я говорил раньше. Файл может содержать много строк (каждая не больше 255 символов. Структура основной программы в целом selfexplainable, но могу дать пояснения, если надо. К функции тоже, конечно ![]() var Сообщение отредактировано: Lapp - 3.03.2009 14:48 -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Unconnected |
![]()
Сообщение
#14
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Ага, на многострочных не работает, хотя изначально подразумевалось, что заработает
![]() -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 1:18 |