IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача с решением и обьяснениями., В файле содержится последовательность слов, разделенных пробелом. Текс
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской

Репутация: -  0  +


Выкладываю решение задачи с пояснениями, мб кому пригодится.
В файле содержится последовательность слов, разделенных пробелом. Текст заканчивается точкой. Вывести в новый файл все слова, отличные от последнего слова.

Program Lab_3; {Имя программы}
uses crt; {Команда подключения модулей}
const {Секция объявления констант}
filename1='a.txt';{Присваиваем константе filename1 имя файла, a.txt}
filename2='b.txt'; {Присваиваем константе filename2 имя файла, b.txt}
var {Секция объявления переменных}
f:text; {Переменная для объявления текстового файла}
s,last:string; {Переменная типа строка}
p,o:byte;{Переменная типа byte, переменная типа byte может принимать значения от 0 до 255}
begin
assign(f,filename1);{Связываем файловую переменную f с конкретным именем внешнего файла 'filename1'}
reset(f); {Открываем существующий файл с которым мы связали переменную f}
s:=''; {Присваиваем переменной строки s пустое значение}
repeat {Выполняем оператор после repeat до тех пор пока не выполнится условие заданное после оператора until}
inc(byte(s[0]));{ Увеличиваем значение кода символа s[0] на 1, т.к. s[0] имеет пустое значение, то к пустому значению прибавляем 1}
read(f,s[byte(s[0])]);{Считываем текст из файловой переменной f в переменную s }
until s[byte(s[0])]='.';{Условие выхода из цикла оператора repeat: переменная s[byte(s[0])] равна '.'}
dec(byte(s[0]));{ Уменьшаем кода символа s[0] на 1, т.е. после выполнения цикла организованного оператором repeat код символа s[0] будет равняться количеству символов в файле, а оператор dec уменьшит это значение на 1}
writeln('Строка файла: ',s); {Выводим текст 'Строка файла: s' , где s переменная строки, которая хранит считанную с файла информацию}
close(f);{Закрываем ранее открытый файл f}
for p:=length(s) downto 1 do {Для всех p от length(s) до 1 выполняется оператор после do, где length(s) – количество символов переменной s}
if s[p]=' ' {Если переменная s[p] равна пробелу, то выполняем оператор после then}
then
begin
last:=copy(s,p+1,255);{Присваиваем переменной строки last значение извлеченное из переменной s начиная с символа p+1 до 255, т.е считываем с переменной s в переменную last последнее слово}
break;{Принудительно завершаем цикл, т.к. нет смысла выполнять цикл полностью если мы дошли до конечного значения переменной s}
end;
assign(f,filename2); {Связываем файловую переменную f с конкретным именем внешнего файла 'filename2'}
rewrite(f); {Открываем файл f в режиме записи. Если указанный файл отсутствует на диске, то он будет создан. Если файл существует и содержит данные, то все они будут удалены и заменены в дальнейшем новыми (перезаписаны)}
writeln('Последнее слово: ',last); {Выводим текст 'Последнее слово: last' , где last переменная строки, которая хранит последнее слово файла}
o:=1;{Переменной о присваиваем значение 1, о – переменная с которой будем начинать извлечение слова из переменной s}
for p:=1 to p do {Для p от 1 до p выполняем оператор после do}
if s[p]=' ' {Если переменная s[p] равна пробелу, то выполняем оператор после then}
then
begin
if copy(s,o,p-o)<>last {Если извлеченное значение из переменой s от o до o-p не равно значению переменной last, то выполняется оператор после then, т.е сравниваем извлеченное слово с последним словом и если слова не равны то переходим к выполнению оператора после then}
then writeln(f,copy(s,o,p-o)); {Записываем в файл f значение извлеченное из переменной s от о до p-о, т.е. извлеченное слово}
o:=p+1;{Присваиваем переменной о значение переменной p+1, т.е. задаем номер символа с которого будет начинаться извлечение из переменной s}
end;
close(f); {Закрываем ранее открытый файл f}
readln{Ожидание нажатия клавиши Enter}
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.05.2024 10:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name