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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


И зачем? На этом форуме подобная задача решалась неоднократно, достаточно было воспользоваться поиском (а коли ты не воспользовался - то и другой на твое решение плевать хотел). А по поводу комментариев - я бы за такой ужас больше двух баллов не поставил: комментарии "забивают" собственно программу. Не надо комментировать каждый символ.

Цитата
s,last:string; {Переменная типа строка}
Это что, для даунов? Недостаточно ":string", чтобы понять, что происходит?

Цитата
p,o:byte;{Переменная типа byte, переменная типа byte может принимать значения от 0 до 255}
А всю справочную систему скопировать не хочешь? Кстати, "низачОт" тебе: не указал, при каких условиях сколько символов может храниться в строке...

Дальше комментировать нет смысла...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Ну вообще по скольку у меня это 3 программа по счету, то с самого нуля было тяжко разбираться как это все работает, вот ушел весь день. Были бы все задачи так расписаны было бы проще разбираться начаинающим, типа меня. А то задаешь вопрос на какую нибудь задачу и фиг кто ответит. И если ты такой умный, то коменти пожалуйста только то что не верно описано.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Был бы под рукой у каждого свой собсвенный программист,математик,физик,финансист, менеджер,тогда вообще делать было бы нечего....А в остальном согласен с предыдущим оратором.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Умники, лучше ответте на вопрос тут:
Динамические переменные
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


А все спасибо, не надо разобрался.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


Цитата
лучше ответте на вопрос тут:
Да с чего бы? Тот, кто тебе это написал - пусть и отвечает. Тем более, что на другом форуме я тебе до такой степени разжевал работу со списками и стеками, что это понял бы даже "дуб, в тени которого сидел Пушкин" (С) Г. Хазанов
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


Да фиг с вами не буду больш выкладывать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

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

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


Ой как испугал.
Ты суда пришел учить или помощи просить?То, как ты спрашиваешь и просишь помощи, будет влиять на то,как тебе будут отвечать,если конешно будут.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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