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

Шторм
Сообщения: 12
Зарегистрирован: 06 июн 2008, 17:31

Файл 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.
Исправте пожалуйста!!!
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Ну раз в исходном файле есть буквы и цифры, значит, скорее всего, он будет ткстовый. А вот на счет выходных - скорее всего первый будет File of Char, а второй File of Integer.
Ни что так не ограничивает фантазию программиста, как компилятор...
Шторм
Сообщения: 12
Зарегистрирован: 06 июн 2008, 17:31

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

var f : text;
s : file of char;
g: file of integer;
а так будет работать?
Шторм
Сообщения: 12
Зарегистрирован: 06 июн 2008, 17:31

ой

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

 :file of char;
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Данный код, конечно, так работать не будет, хотя вопрос еше в том, нужен ли вывод чисел в бинарном формате(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 должен существовать.
Ни что так не ограничивает фантазию программиста, как компилятор...
Шторм
Сообщения: 12
Зарегистрирован: 06 июн 2008, 17:31

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

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.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Когда говорится
Файл 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]

это лишнее.
Ни что так не ограничивает фантазию программиста, как компилятор...
Шторм
Сообщения: 12
Зарегистрирован: 06 июн 2008, 17:31

Не кините правильный код? пожалуйста
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

[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]
Ни что так не ограничивает фантазию программиста, как компилятор...
Шторм
Сообщения: 12
Зарегистрирован: 06 июн 2008, 17:31

Не работает чё то
Ответить