• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Текстовый файл

Black_Betty

Новые
Регистрация
26 Окт 2012
Сообщения
17
Реакции
0
Баллы
0
Паскаль. Текстовый файл

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



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.
 
Да уж, дорогая Бетти, боюсь, пассаж насчет "терминатора" Вы поняли слишком буквально, и вместо того, чтобы просто прервать ввод на нулевом числе, Вы пытаетесь при вводе нуля совсем уничтожить файл! Думаю, этого не надо. Не говоря уж о том, что незакрытый файл уничтожить не получится.
Насчет того, что "преподаватель сказал что все просчеты надо вести в самом файле", то тут надо поразмыслить. Я, честно говоря, сходу не очень вижу, как это. Сейчас попробую что-нибудь придумать.
 
Я буду вам очень благодарна.
 
Я буду вам очень благодарна.
Честно говоря, не очень понимаю, что имел в виду Ваш перподаватель, поскольку никаких "просчетов в самом файле" язык Паскаль не предусматривает, а уж тем более в файле текстовом. Такой файл допускает только ввод текста, дозапись в конце, чтение и уничтожение. Всё! Типизированные файлы (да и то не все), в отличие от текстовых, позволяют еще поиграть с номером позиции компонета (команды 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.
 
Назад
Сверху