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