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

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

Форум «Всё о Паскале» _ Теоретические вопросы _ Задачи на файлы

Автор: Koma 26.09.2006 0:21

Опишите процедуру delete(f), удаляющую из файла f все литеры '+' и '-'.

Код

uses wincrt;
type myfile = file of char;
procedure delete(var s,s1: myfile; ac : char);
begin
while not eof(s) do
begin
read(s,ac);
if ac in ['+','-'] then
else write(s1,ac);
end;
end;
var f,f1 : myfile;
     c,a : char;
begin
assign(f,'c:\a.txt');
reset(f);
assign(f1,'c:\b.txt');
rewrite(f1);
delete(f,f1,a);
close(f);
close(f1);
end.


Опишите процедуру double(f), удваивающие в файле f все ЦИФРЫ
Код
uses wincrt;
type myfile = file of char;
procedure dva(var s,s1: myfile; ac : char);
begin
while not eof(s) do
begin
read(s,ac);
if ac in ['0'..'9'] then

write(s1,ac,ac)
else write(s1,ac);

end;
end;
var f,f1 : myfile;
     c,a : char;
begin
assign(f,'c:\a.txt');
reset(f);
assign(f1,'c:\b.txt');
rewrite(f1);
dva(f,f1,a);
close(f);
close(f1);

end.


Опишите процедуру replace(f,c), заменяющую последнюю литеру в файле f на литеру с
Код
uses wincrt;
type myfile = file of char;
procedure replace(var s: myfile; ac : char);
var i : integer;
begin
i:=filesize(s);
seek(s,i);
write(s,ac);
end;
var f,f1 : myfile;
     c,a : char;
begin
assign(f,'c:\a.txt');
reset(f);
read(a);
replace(f,a);
close(f);
end.


Опишите процедуру next(f), заменяющую в файле каждую ЦИФРУ
на следующую по величине цифру ('9'заменять на '0').
Код
uses wincrt;
type myfile = file of char;
procedure next(var s,s1: myfile; ac : char);
begin
while not eof(s) do
begin
read(s,ac);
if ac in ['0'..'9'] then
  case ac of
  '0': ac:='1';
  '1': ac:='2';
  '2': ac:='3';
  '3': ac:='4';
  '4': ac:='5';
  '5': ac:='6';
  '6': ac:='7';
  '7': ac:='8';
  '8': ac:='9';
  '9': ac:='0';
  end;
write(s1,ac);
end;
end;
var f,f1 : myfile;
     c,a : char;
begin
assign(f,'c:\a.txt');
reset(f);
assign(f1,'c:\b.txt');
rewrite(f1);
next(f,f1,a);
close(f);
close(f1);

end.


Не могу сделоть следующие задание:"30) type myfile = file of char;
Опишите процедуру change(f), удаляющую из файла все отрицательные нечетные числа."
Кто может, объясните плизз....!!!

Автор: Koma 26.09.2006 0:46

Как я понимаю, нужно проверить чаровкую переменную, на вхождение во множество отрицательных чисел(символов), но как это селать????
Мне не нужен полный текст проги, просто, кто знает, скажите как проверить на вхождение????

Автор: volvo 26.09.2006 1:19

"Чаровская", как ты ее называешь, переменная, не способна физически хранить отрицательные значения... Здесь немного другой способ решения: читать символы из файла в строку, пока не встретится разделитель (скажем, пробел) или не будет достигнут конец файла... Полученную строку перевести в число (используя процедуру Val, например), и если полученное число - отрицательное и нечетное, то НЕ записывать строковое представление числа в файл-результат, иначе - ДА записывать... Все разделители тоже должны записываться в выходной файл...

Т.е., фактически, иы должен рассматривать свой File Of Char как обычный текстовый файл...

Цитата
Мне не нужен полный текст проги
smile.gif Само собой... Это - теоретический раздел, здесь помогают только теорией... yes2.gif

Автор: SiNaC0m 26.09.2006 3:10

Код
procedure change(var g,g1 : myfile;ch : char);
var st : string;
    i,int : integer;
begin
while not eof(g) do
read(g,ch);
st:=ch;
val(st,i,int);
writeln(int);{Вывыдит номер позиции, в которой произошла ошибка преобразования}
if (i<0)and(odd(i)) then
else
write(g1,ch)
end;

Не могу понять, почему мне в первой же позиции выдаёт ошибку преобразования??? blink.gif

Автор: Pola 26.09.2006 21:27

А там всего одна позиция...

Автор: }0pa 29.09.2006 23:07

Не могу понять, нафига ты вообще используешь Char? Не проще ли использовать целый, например, тип.

Автор: volvo 29.09.2006 23:13

Цитата
Не проще ли использовать целый, например, тип.
Нет, не проще... Проще вообще никакой не использовать, тем более, что именно это и требуется по заданию:

Цитата(Koma @ 25.09.2006 20:21)
Опишите процедуру change(f), удаляющую из файла все отрицательные нечетные числа.
Я вижу, что функция должна принимать только один параметр... Где автор нашел еще один - ума не приложу...

Автор: SiNaC0m 1.10.2006 14:35

Всем спасибо за помощь, ЭКЗАМЕН Я СДАЛ!!! good.gif