Помощь - Поиск - Пользователи - Календарь
Полная версия: Текстовые файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
not_programmer
Не могу заново открыть файл и вывести инфу на экран!! Как это сделать в этих 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 мин.
Файлы для первой прогиЖ

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

Добавлено через 6 мин.
Спасибо большое ), чтото я про это и забыл )
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.