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

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

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

Автор: not_programmer 28.12.2007 22:29

Не могу заново открыть файл и вывести инфу на экран!! Как это сделать в этих 2х прогах??
Номер 1:


Program MORZE;
Type TElem = ^Elem;
Elem = Record
Next : TElem;
Bukva : String;
End;
Var Stack,E : TElem;
Bukva,Str : String;
I : Integer;

{ procedura vstavki bukvi v stek }
Procedure Add(Bukva : String);
Var E : TElem;
Begin
New(E);
E^.Next := Stack;
E^.Bukva := Bukva;
Stack := E;
End;

Begin
{ otkrivaem dannih }
Assign(Input,'morze.txt');
Reset(Input);
Assign(Output,'output.txt');
ReWrite(Output);
{ chtenie faila }
While Not Eof Do Begin
ReadLn(Str);
Repeat
I := Pos(' ',Str);
If I > 0 Then Begin
Bukva := Copy(Str,0,I-1);
Add(Bukva);
Str := Copy(Str,I+1,Length(Str)-I);
End
Until I = 0;
If Length(Str) > 0 Then Add(Str);
End;
{ pechat' steka v vihodnoi fail }
E := Stack;
While E <> nil Do Begin
WriteLn(E^.Bukva);
E := E^.Next;
End;

{ zakrivaem faili }
Close(Input);
Close(Output);
End.



Прога 2:

Program ATS_5_15;
Type TElem = ^Elem;
Elem = Record
Next : TElem;
FIO : String
End;
Var ATS : Array[0..99] Of TElem;
InFile,OutFile : String;
I,Code : Integer;
Str,FIO,Phone : String;
Abonent : TElem;
Begin
{ vvod imen failov }
Write('Enter input filename: '); ReadLn(InFile);
Write('Enter output filename: '); ReadLn(OutFile);
Assign(Input,InFile);
Assign(Output,OutFile);
Reset(Input);
ReWrite(Output);
{ obrabotka dannih }
For I := 0 To 99 Do ATS[I] := nil;
While Not Eof Do Begin
{ chtenie stroki }
ReadLn(Str);
I := Pos(',',Str);
{ izvlekaem fio i nomer telefona }
FIO := Copy(Str,0,I-1);
Phone := Copy(Str,I+1,Length(Str)-I);
If Length(Phone) > 2 Then Phone := Copy(Phone,0,2);
Val(Phone,I,Code);
{ uzanaem pervie dve cifri }
While I >= 100 Do I := I Div 10;
{ dobavlyaem abonenta v spisok }
New(Abonent);
Abonent^.FIO := FIO;
Abonent^.Next := ATS[I];
ATS[I] := Abonent;
End;
{ vivod spiska v vihodnoi fail }
For I := 0 To 99 Do
If ATS[I] <> nil Then Begin
Abonent := ATS[I];
Write(I,':');
While Abonent <> nil Do Begin
Write(Abonent^.FIO);
If Abonent^.Next <> nil Then Write(',');
Abonent := Abonent^.Next;
End;
WriteLn;
End;
{ zakrivaem faili }
Close(Input);
Close(Output);
End.



В обоих прогах пытаюсь открыть файл Аутпут(полсе 2ух close), но пишет что файл не открыт для вывода или чтото подобное. Как можна вывести то на экран содержимое файла Output? Не нужно предлагать выводить результат работы.

Помогите, плиз, срочна!

Добавлено через 9 мин.
Файлы для первой прогиЖ

Добавлено через 1 мин.
Цитата(not_programmer @ 28.12.2007 20:29) *

Не могу заново открыть файл и вывести инфу на экран!! Как это сделать в этих 2х прогах??
Номер 1:

Program MORZE;
Type TElem = ^Elem;
Elem = Record
Next : TElem;
Bukva : String;
End;
Var Stack,E : TElem;
Bukva,Str : String;
I : Integer;

{ procedura vstavki bukvi v stek }
Procedure Add(Bukva : String);
Var E : TElem;
Begin
New(E);
E^.Next := Stack;
E^.Bukva := Bukva;
Stack := E;
End;

Begin
{ otkrivaem dannih }
Assign(Input,'morze.txt');
Reset(Input);
Assign(Output,'output.txt');
ReWrite(Output);
{ chtenie faila }
While Not Eof Do Begin
ReadLn(Str);
Repeat
I := Pos(' ',Str);
If I > 0 Then Begin
Bukva := Copy(Str,0,I-1);
Add(Bukva);
Str := Copy(Str,I+1,Length(Str)-I);
End
Until I = 0;
If Length(Str) > 0 Then Add(Str);
End;
{ pechat' steka v vihodnoi fail }
E := Stack;
While E <> nil Do Begin
WriteLn(E^.Bukva);
E := E^.Next;
End;

{ zakrivaem faili }
Close(Input);
Close(Output);
End.



Прога 2:

Program ATS_5_15;
Type TElem = ^Elem;
Elem = Record
Next : TElem;
FIO : String
End;
Var ATS : Array[0..99] Of TElem;
InFile,OutFile : String;
I,Code : Integer;
Str,FIO,Phone : String;
Abonent : TElem;
Begin
{ vvod imen failov }
Write('Enter input filename: '); ReadLn(InFile);
Write('Enter output filename: '); ReadLn(OutFile);
Assign(Input,InFile);
Assign(Output,OutFile);
Reset(Input);
ReWrite(Output);
{ obrabotka dannih }
For I := 0 To 99 Do ATS[I] := nil;
While Not Eof Do Begin
{ chtenie stroki }
ReadLn(Str);
I := Pos(',',Str);
{ izvlekaem fio i nomer telefona }
FIO := Copy(Str,0,I-1);
Phone := Copy(Str,I+1,Length(Str)-I);
If Length(Phone) > 2 Then Phone := Copy(Phone,0,2);
Val(Phone,I,Code);
{ uzanaem pervie dve cifri }
While I >= 100 Do I := I Div 10;
{ dobavlyaem abonenta v spisok }
New(Abonent);
Abonent^.FIO := FIO;
Abonent^.Next := ATS[I];
ATS[I] := Abonent;
End;
{ vivod spiska v vihodnoi fail }
For I := 0 To 99 Do
If ATS[I] <> nil Then Begin
Abonent := ATS[I];
Write(I,':');
While Abonent <> nil Do Begin
Write(Abonent^.FIO);
If Abonent^.Next <> nil Then Write(',');
Abonent := Abonent^.Next;
End;
WriteLn;
End;
{ zakrivaem faili }
Close(Input);
Close(Output);
End.



В обоих прогах пытаюсь открыть файл Аутпут(полсе 2ух close), но пишет что файл не открыт для вывода или чтото подобное. Как можна вывести то на экран содержимое файла Output? Не нужно предлагать выводить результат работы.

Помогите, плиз, срочна!

Добавлено через 9 мин.
Файлы для первой прогиЖ




Прикрепленные файлы
Прикрепленный файл  MORZE.TXT ( 36 байт ) Кол-во скачиваний: 270
Прикрепленный файл  OUTPUT.TXT ( 44 байт ) Кол-во скачиваний: 266

Автор: Ozzя 28.12.2007 22:41

input, output - зарезервированные имена для ввода с клавиатуры/вывода на терминал.
Какого рожна Вы их используете?
Примите что-нибудт попроще - f1,f2 и etc.

Автор: not_programmer 28.12.2007 22:41

Для второй проги:

Добавлено через 6 мин.
Спасибо большое ), чтото я про это и забыл )


Прикрепленные файлы
Прикрепленный файл  ATS.txt ( 116 байт ) Кол-во скачиваний: 246
Прикрепленный файл  rep.txt ( 69 байт ) Кол-во скачиваний: 234