Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль. Текстовый файл (http://www.tehnari.ru/f41/t81830/)

Black_Betty 08.12.2012 14:36

Паскаль. Текстовый файл
 
Создать текстовый файл, записать в него последовательность чисел(конец последовательности (терминатор) – ноль),вывести эту последовательность на экран, найти мин и макс, поменять их местами, и новую последовательность вывести на экран.
Сделала всё это используя массив, но преподаватель сказал что все просчеты надо вести в самом файле и массив не использовать, натолкните на мысль как это сделать.

Black_Betty 08.12.2012 18:01

Вот это то что у меня получилось написать для ввода этих чисел. Но вот как теперь остальное сделать...и вообще имеет ли смысл ниже написанное.



Program variant_11;
Uses WinCRT;
var f:text;
a:string;
Begin
Assign(f,'f.txt');
ReWrite(f);
WriteLn('Vvedite chisls:');
ReadLn(a);
If (a='0') Then
Begin
WriteLn('net');
Erase(f);
Exit;
End
Else
begin
a:=a+' ';
Write(f,a);
End;
Repeat
Write('Ochered chislo:');
ReadLn(a);
If (a<>'0')
Then
begin
a:=a+' ';
Write(f, a);
end;
Until (a='0');
WriteLn('Ishod fail:');
Reset(f);
WhIle not eof(f) do
Begin
read(f,a);
Write(a);
End;
Close(f);
End.

Vladimir_S 08.12.2012 20:06

Да уж, дорогая Бетти, боюсь, пассаж насчет "терминатора" Вы поняли слишком буквально, и вместо того, чтобы просто прервать ввод на нулевом числе, Вы пытаетесь при вводе нуля совсем уничтожить файл! Думаю, этого не надо. Не говоря уж о том, что незакрытый файл уничтожить не получится.
Насчет того, что "преподаватель сказал что все просчеты надо вести в самом файле", то тут надо поразмыслить. Я, честно говоря, сходу не очень вижу, как это. Сейчас попробую что-нибудь придумать.

Black_Betty 08.12.2012 20:23

Я буду вам очень благодарна.

Vladimir_S 08.12.2012 21:08

Цитата:

Сообщение от Black_Betty (Сообщение 830744)
Я буду вам очень благодарна.

Честно говоря, не очень понимаю, что имел в виду Ваш перподаватель, поскольку никаких "просчетов в самом файле" язык Паскаль не предусматривает, а уж тем более в файле текстовом. Такой файл допускает только ввод текста, дозапись в конце, чтение и уничтожение. Всё! Типизированные файлы (да и то не все), в отличие от текстовых, позволяют еще поиграть с номером позиции компонета (команды Seek, FilePos и еще несколько), но и от них толку в данном случае немного.
Предлагаю такой вариант, во всяком случае, тут без массивов:
Код:

var
 f:text;
 a,Min,Max:Longint;
Begin
 Assign(f,'f.txt');
 ReWrite(f);
 Write('Vvedite chislo: ');
 ReadLn(a);
 If a<>0 then
  begin
  Min:=a;
  Max:=a;
  Write(f,' ',a);
  repeat
    Write('Ochered chislo: ');
    ReadLn(a);
    If a<>0 then
    begin
      Write(f,' ',a);
      if a<Min then Min:=a;
      if a>Max then Max:=a;
    end;
  until a=0;
  Close(f);
  Writeln;
  Writeln;
  Reset(f);
  Writeln('Initial sequence:');
  Repeat
  Read(f,a);
  Write(' ',a);
  Readln;
  Until EoF(f);
  Close(f);
  Writeln;
  Writeln;
  Reset(f);
  Writeln('Modified sequence:');
  Repeat
  Read(f,a);
  If a=Min then
    Write(' ',Max)
  else
  If a=Max then
    Write(' ',Min)
  else
    Write(' ',a);
  Until EoF(f);
  Close(f);
  Readln;
 end;
End.


Black_Betty 08.12.2012 21:21

Спасибо вам большое


Часовой пояс GMT +4, время: 21:36.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.