Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 08.12.2012, 14:36   #1 (permalink)
Black_Betty
Member
 
Регистрация: 26.10.2012
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль. Текстовый файл

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

Старый 08.12.2012, 14:36
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Подскажу вам, что на форуме имеются аналогичные по содержанию обсуждения

Паскаль. Задача на типизированный файл
Из типизированного файла в текстовый
Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл
Текстовый файл
Паскаль. Создать массив целых чисел и записать его в файл
AbiWord 2.8.4: бесплатный текстовый редактор

Старый 08.12.2012, 18:01   #2 (permalink)
Black_Betty
Member
 
Регистрация: 26.10.2012
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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



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.
Black_Betty вне форума   Ответить с цитированием
Старый 08.12.2012, 20:06   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Да уж, дорогая Бетти, боюсь, пассаж насчет "терминатора" Вы поняли слишком буквально, и вместо того, чтобы просто прервать ввод на нулевом числе, Вы пытаетесь при вводе нуля совсем уничтожить файл! Думаю, этого не надо. Не говоря уж о том, что незакрытый файл уничтожить не получится.
Насчет того, что "преподаватель сказал что все просчеты надо вести в самом файле", то тут надо поразмыслить. Я, честно говоря, сходу не очень вижу, как это. Сейчас попробую что-нибудь придумать.
Vladimir_S вне форума   Ответить с цитированием
Старый 08.12.2012, 20:23   #4 (permalink)
Black_Betty
Member
 
Регистрация: 26.10.2012
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Я буду вам очень благодарна.
Black_Betty вне форума   Ответить с цитированием
Старый 08.12.2012, 21:08   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 08.12.2012, 21:21   #6 (permalink)
Black_Betty
Member
 
Регистрация: 26.10.2012
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо вам большое
Black_Betty вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.