Другие языки программирования и технологии
Turbo Pascal (файлы)
В символьном файле записаны слова, разделенные пробелами. Удалить из файла слова, состоящие менее чем из трех букв, и лишние пробелы. Мой исходник: program zz; var file:file of char; begin assign(file,'file.txt'); rewrite(file); writeln('Ведите строку слов:'); read(file); i:=i+1; while not eof(file) do begin while not eof(file) do i:=i+1 if file(i)=' ' then k:=i+1; delete(file;i,j) end; end. Все вроде бы шло гладко но вот остановилсяна проблеме запоминания позицый пробелов... Внесите пожалуйстакорективы
запоминание позиции не проблема, для этого функция filepos() существует. а коррективы в твою программу внести невозможно, ее надо просто удалить и написать заново, потому как в данной последовательности операторов нет никакого смысла:
rewrite(file); - создаешь новый файл и открываешь его для записи
writeln('Ведите строку слов: '); - выводишь на экран это сообщение, видимо, пользователь будет пытаться что-то ввести
read(file); - вроде бы читаешь из пустого файла, открытого для записи, только что и куда оно помещается?
i:=i+1; - неведомое значение неведомой переменной увеличивается на 1
while not eof(file) do - пока не конец файла (а раз он пуст, то уже конец)
begin
while not eof(file) do - снова пока не конец файла, но уже внутри другого такого же цикла, внешний цикл выполнится только 1 раз
i:=i+1 - неведомое значение неведомой переменной опять увеличивается на 1
if file(i)=' ' - file - не функция, а служебное слово, поэтому file(i) в принципе не существует
then k:=i+1;
delete(file;i,j) - эта функция применяется для удаления из строки, а не из файла
end;
rewrite(file); - создаешь новый файл и открываешь его для записи
writeln('Ведите строку слов: '); - выводишь на экран это сообщение, видимо, пользователь будет пытаться что-то ввести
read(file); - вроде бы читаешь из пустого файла, открытого для записи, только что и куда оно помещается?
i:=i+1; - неведомое значение неведомой переменной увеличивается на 1
while not eof(file) do - пока не конец файла (а раз он пуст, то уже конец)
begin
while not eof(file) do - снова пока не конец файла, но уже внутри другого такого же цикла, внешний цикл выполнится только 1 раз
i:=i+1 - неведомое значение неведомой переменной опять увеличивается на 1
if file(i)=' ' - file - не функция, а служебное слово, поэтому file(i) в принципе не существует
then k:=i+1;
delete(file;i,j) - эта функция применяется для удаления из строки, а не из файла
end;
Ну ты читай один файл, пиши в другой. А потом в случае необходимости замени старый файл новым. Либо просто выведи на экран новый файл.
С пробелом у тебя проблема, вглядись в свою логическую ошибку, она у тебя в конце проги.
Похожие вопросы
- Люди помогите пожалуйста....Кто понимает TURBO PASCAL
- Помогите сделать задания по програмированию(двумерные массивы)Turbo Pascal
- Как вставить текст в Turbo Pascal 7.1???
- Turbo Pascal
- Объясните смысл прогаммы в Turbo Pascal
- Я в коледже Turbo Pascal прохожу. Скажите он вообще где нибудь нужен? Может Turbo Pascal морально устарел?
- DOS OC или создание ОС на Turbo Pascal
- turbo pascal 7.0 Определить принадлежность к области точек с заданными координатами!!!
- Помогите с Turbo Pascal
- Как задать разрешение окна в графическом режиме Turbo Pascal??? Alt-Enter не предлагать!!