Страница 1 из 2

Типизированный файл (Pascal)

Добавлено: 06 июн 2008, 17:37
Шторм
Файл f содержит буквы и цифры.Занести в файл h только буквы а в файл g - цифры.я сделал с помощью текстового файла а как с помощью типизированного?Вот код:

Код: Выделить всё

var
  F,G,H:text;
  S:string;
  sc:char;
  I,N:integer;
begin
 writeln('vvedite 4islo strok : ');
 readln(N);
 Assign(F,'c:\ffile.txt');
 Rewrite(F);
 for i:=1 to N do
 begin
   readln(S);
   writeln(F,S);
  end;
   close(F);
  Reset(f);
 Assign(G,'c:\gfile.txt');
  Rewrite(g);
 Assign(H,'c:\hfile.txt');
  Rewrite(H);
 while not eof(f) do
 begin
  read(f,sc);
  case sc of
 '1'..'9','0':write(g,sc);
 'a'..'z':write(h,sc);
  end;
 end;
 close(F);
   close(G);
     close(H);
end.
Исправте пожалуйста!!!

Re: Типизированный файл

Добавлено: 06 июн 2008, 17:43
MOTOCoder
Ну раз в исходном файле есть буквы и цифры, значит, скорее всего, он будет ткстовый. А вот на счет выходных - скорее всего первый будет File of Char, а второй File of Integer.

Re: Типизированный файл

Добавлено: 06 июн 2008, 17:47
Шторм

Код: Выделить всё

var f : text;
s : file of char;
g: file of integer;
а так будет работать?

Re: Типизированный файл

Добавлено: 06 июн 2008, 17:50
Шторм
ой

Код: Выделить всё

 :file of char;

Re: Типизированный файл

Добавлено: 06 июн 2008, 17:56
MOTOCoder
Данный код, конечно, так работать не будет, хотя вопрос еше в том, нужен ли вывод чисел в бинарном формате(file of integer). Он в таких задачах используется редко, хотя как раз является типизированным файлом. Наверное лучше все 3 файла будет описать как File of Char
Еще, как я понимаю, ввод исходного файла здесь не нужен - он уже задан по условию.

В принципе, нужно заменить только тип всех файлов на file of char
и вместо кода до Assign(G,'c:\gfile.txt');
поставить

Код: Выделить всё

Assign(F,'C:\F.txt');
 Reset(F);
Файл C:\F.txt должен существовать.

Re: Типизированный файл

Добавлено: 06 июн 2008, 17:59
Шторм

Код: Выделить всё

var
  F,G,H:file of integer;
  S:string;
  sc:char;
  I,N:integer;
begin
 writeln('vvedite 4islo strok : ');
 readln(N);
 Assign(F,'c:\ffile.txt');
 Rewrite(F);
 for i:=1 to N do
 begin
   readln(S);
   writeln(F,S);
  end;
   close(F);
  Reset(f);
 Assign(f,'c:\gfile.txt');
  Rewrite(g);
 Assign(H,'c:\hfile.txt');
  Rewrite(H);
 while not eof(f) do
 begin
  read(f,sc);
  case sc of
 '1'..'9','0':write(g,sc);
 'a'..'z':write(h,sc);
  end;
 end;
 close(F);
   close(G);
     close(H);
end.

Re: Типизированный файл

Добавлено: 06 июн 2008, 18:02
MOTOCoder
Когда говорится
Файл f содержит буквы и цифры
создавать его из программы не нужно, он уже долже быть на диске.
То есть
[syntax='Delphi']
writeln('vvedite 4islo strok : ');
readln(N);
Assign(F,'c:\ffile.txt');
Rewrite(F);
for i:=1 to N do
begin
readln(S);
writeln(F,S);
end;
close(F);
[/syntax]

это лишнее.

Re: Типизированный файл

Добавлено: 06 июн 2008, 18:04
Шторм
Не кините правильный код? пожалуйста

Re: Типизированный файл

Добавлено: 06 июн 2008, 18:10
MOTOCoder
[syntax='Delphi']
var
F,G,H:{file of integer}File of Char;
S:string;
sc:char;
I,N:integer;
begin
{writeln('vvedite 4islo strok : ');
readln(N);
Assign(F,'c:\ffile.txt');
Rewrite(F);
for i:=1 to N do
begin
readln(S);
writeln(F,S);
end;
close(F);}{лишнее}
Assign(F,'c:\ffile.txt');{добавляем открытие файла}
Reset(f);
Assign(f,'c:\gfile.txt');
Rewrite(g);
Assign(H,'c:\hfile.txt');
Rewrite(H);
while not eof(f) do
begin
read(f,sc);
case sc of
'1'..'9','0':write(g,sc);
'a'..'z':write(h,sc);
end;
end;
close(F);
close(G);
close(H);
end.
[/syntax]

Re: Типизированный файл

Добавлено: 06 июн 2008, 18:14
Шторм
Не работает чё то