Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачи на файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
SiNaC0m
Опишите процедуру 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), удаляющую из файла все отрицательные нечетные числа."
Кто может, объясните плизз....!!!
SiNaC0m
Как я понимаю, нужно проверить чаровкую переменную, на вхождение во множество отрицательных чисел(символов), но как это селать????
Мне не нужен полный текст проги, просто, кто знает, скажите как проверить на вхождение????
volvo
"Чаровская", как ты ее называешь, переменная, не способна физически хранить отрицательные значения... Здесь немного другой способ решения: читать символы из файла в строку, пока не встретится разделитель (скажем, пробел) или не будет достигнут конец файла... Полученную строку перевести в число (используя процедуру Val, например), и если полученное число - отрицательное и нечетное, то НЕ записывать строковое представление числа в файл-результат, иначе - ДА записывать... Все разделители тоже должны записываться в выходной файл...

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

Цитата
Мне не нужен полный текст проги
smile.gif Само собой... Это - теоретический раздел, здесь помогают только теорией... yes2.gif
SiNaC0m
Код
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
А там всего одна позиция...
}0pa
Не могу понять, нафига ты вообще используешь Char? Не проще ли использовать целый, например, тип.
volvo
Цитата
Не проще ли использовать целый, например, тип.
Нет, не проще... Проще вообще никакой не использовать, тем более, что именно это и требуется по заданию:

Цитата(Koma @ 25.09.2006 20:21)
Опишите процедуру change(f), удаляющую из файла все отрицательные нечетные числа.
Я вижу, что функция должна принимать только один параметр... Где автор нашел еще один - ума не приложу...
SiNaC0m
Всем спасибо за помощь, ЭКЗАМЕН Я СДАЛ!!! good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.