Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Файлы

Автор: Richard 22.05.2007 17:44

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

Автор: Ozzя 22.05.2007 18:01

Вспомогательным файлом пользоваться можно?

Автор: Richard 22.05.2007 18:09

А че за вспомогательный файл?

Автор: Ozzя 22.05.2007 18:13

while not eof(f) do
begin
read(f,ch); // Из одного читаешь
if ch <> ' ' then
write(f1,ch); // в другой пишешь
end;

Автор: Richard 22.05.2007 18:28

То есть полностью программа должна выглядеть примерно так


Program files;
var
ch:char;
f,f1:text;
begin
assign(f, 'file.txt');
reset(f);
assign(f1,'file1.txt');
rewrite(f1);
while not eof(f) do
begin
read(f,ch);
if ch <> ' ' then
write(f1,ch);
end;
close(f);
close(f1);
end.


И вопрос как проверить что программа работает

Автор: Ozzя 22.05.2007 18:30

В Блокноте набей произвольный текст.
И посмотри 2-й файл, если все пробелы удалились, то всё Ок.

Добавлено через 16 мин.
volvo
Пока ты здесь rolleyes.gif
Без вспомогательного файлакак решить?
У меня опять ступор norespect.gif

Автор: volvo 22.05.2007 18:50

Цитата
Без вспомогательного файла как решить?
Если в условии ясно указано, что обрабатываться должен файл типа Text - то никак, это все-таки файл последовательного доступа; если просто дан файл, и с ним я могу делать все, что хочу - то File Of Char + фантазия... smile.gif

Автор: Ozzя 22.05.2007 18:54


volvo
Меня почему-то пробивало на нетипизированный файл и blockread/blockwrite

Во 2-м случае

Автор: Malice 22.05.2007 19:07

Цитата(Ozzя @ 22.05.2007 15:30) *

Пока ты здесь rolleyes.gif
Без вспомогательного файлакак решить?
У меня опять ступор norespect.gif

Ну или как обычно через одно место (стек, я имею ввиду smile.gif )
var f:text;
procedure del_(var f:text);
var s:string;
begin
if not eof (f) then begin
readln (f,s);
del_(f);
while pos (' ',s)>0 do delete (s, pos(' ',s),1);
writeln (f,s);
end else rewrite (f);
end;

begin
assign (f,'c:\tst.txt');
reset (f);
del_(f); reset (f);
del_(f);
close (f);
end.