Рейтинг@Mail.ru
Menu
Скачать картинки на телефон бесплатно.
Заставки для телефона, аватарки.
(Вырезать из фотографии)

Роза `Гренд Могул` Яхта `Алиса` Лесное озеро Музей `Пирогово` Белочка
Выберите рубрику (тему)

Работа с текстовым файлом

Программирование на Паскале
Программа 9

В произвольном текстовом файле f записана последовательность действительных чисел, которые разделены пробелами. Описать функцию Max(f) для нахождения наибольшего из этих чисел.


Текст программы


program Prg9;



{ http://nataliya.kiev.ua/?id=109 }



uses


  crt;

var


  f: Text;
  q: char;
  fname: string;

 

procedure newfile(var f: Text);


 
var

    s: string;
 
begin

    ReWrite(f);
    repeat
      Write('str=');
      ReadLn(s);
      if s <> '' then
        WriteLn(f, s)
    until s = '';
    Close(f);
  end;

 

procedure outputfile(var f: Text);


 
var

    s: string;
 
begin

    Reset(f);
    repeat
      ReadLn(f, s);
      Write('str=');
      WriteLn(s);
    until EOF(f);
  end;

 

function max(var f: Text): real;


 
var

    x, m: real;
 
begin

    Reset(f);
    Read(f, m);
    while not EOF(f) do
      begin
        Read(f, X);
        if x > m then
          m := x;
      end;
    max := m;
    Close(f);
  end;

begin


  ClrScr;
  WriteLn('Нужно создавать новый файл?');
  ReadLn(q);
  WriteLn('Введите имя файла.');
  ReadLn(fname);
  Assign(f, fname);
 
if (q = 'Y') or (q = 'y') then

    newfile(f)
 
else

    outputfile(f);
 
WriteLn('Наибольший элемент в файле:');

 
WriteLn(max(f):0:3);

 
if (q = 'Y') or (q = 'y') then

   
begin

      WriteLn('Изъять созданный файл?');
      ReadLn(q);
      if (q = 'Y') or (q = 'y') then
        Erase(f);
    end;
 
ReadKey;

end.

Print

Печатать текст программы!



Source code: «Работа с текстовым файлом».

Редактировать, копировать

(WYSIWYG редактор «NicEdit»)
Загрузить файл с текстом программы: «Работа с текстовым файлом». Печатать текст программы!

Загрузить файл с текстом программы

(Prg9.pas - Windows-1251)


Результат работы программы


1)
Нужно создавать новый файл?
y
Введите имя файла.
myfile.txt
str=12 17 29
str=31 999 26
str=9023.1 2852
str=765.19
str=
Наибольший элемент в файле:
9023.100
Изъять созданный файл?
y

2)
Нужно создавать новый файл?
n
Введите имя файла.
abc.txt
str=256 113 511 0.4
str=43 785 13
str=98.1 32 476
str=123
str=74 88
Наибольший элемент в файле:
785.000

3)
Нужно создавать новый файл?
y
Введите имя файла.
f
str=555.5 246.8 421 300.8
str=888.68
str=13 2245.03
str=2005
str=
Наибольший элемент в файле:
2245.030
Изъять созданный файл?
n

4)
Нужно создавать новый файл?
n
Введите имя файла.
f
str=555.5 246.8 421 300.8
str=888.68
str=13 2245.03
str=2005
Наибольший элемент в файле:
2245.030

Теория к программе


Работа с текстовым файлом



 

Структурированные данные - строка



    Тип строка:
STRING[n]
- последовательность символов длиной n, что помещаются в апострофах, n [0,255], по умолчанию n=225.
    + операция конкатенации (склеивание строк).

 

Сравнение строк



    Для данных типа строка определенны все операции сравнения (=,<>,>,>=,<,<=). Сравнение выполняется по лексикографическому принципу, то есть при сравнивании двух строк каждый символ первой строки сравнивается последовательно слева направо с каждым символом второй строки (метод словаря) к первому несовпадению. За результатом сравнения первого несовпадающего символа определяется результат сравнения двух строк.

   

Строка как массив



      Данные типа строка сохраняются в виде следующей последовательности байт, которая содержат коды ASCII символов, нулевой байт содержит фактическую длину строки
      К каждому байту (символу) можно обратиться как к элементу массива за его индексом

 

Процедуры и функции работы с строками



   

CONCAT

- конкатенация последовательности строк
   

COPY

- выделить подстроку
   

DELETE

- изъять подстроку
   

INSERT

- прибавить подстроку
   

LENGTH

- определить длину строки
   

POS

- выполнить поиск подстроки в строке
   

STR

- преобразовать числовое значение в его символьную репрезентацию
   

VAL

- преобразовать строку в её числовое значение

      1)

LENGTH(S: string):integer

- возвращает длину строки (значение первого байту)
        LENGTH('word') --> 4
      2)

CONCAT(s1,....s:string):string;

- выполняет конкатенацию (объединение) строк;
        где si - список строк или выражений типа строка; общая длина результата *255 символов
      4)

DELETE(var s:string, n1,n2:integer)

- процедура, разрешает изъять подстроку из строки S, причем сама строка S изменяется; здесь n1 - первый изымаемый символ; n2 - количество изымаемых символов.
      5)

INSERT(S1:string;var S2:string;n:integer);

- процедура добавляет подстроку S1 в строку S2 начиная из позиции n; S1, S2 и n - выражения соответствующего типа
      6)

POS(S1,S2: string):byte

- разыскивает подстроку S1 в строке S2 и возвращает номер позиции первого найденного вхождения. Если возвращается 0 - строка не содержит предоставленной подстроки. S1, S2 - могут быть выражениями типа строка
      7)

STR(x[:l1[:l2]], var s:string);


        где x - выражение целого (integer) или действительного (real) типа
        Процедура предоставленна в форме x:l1 (целое) или x:l1:l2 (действительное) число преобразовывает в строку и сохраняет её в переменной s.
      8)

VAL(s:string; var v:integer/real; var c:integer);


        Процедура строка s преобразовывает в числовую форму (обратная к str) и сохраняет её в переменной v. Если строка содержит недопустимый символ (который не может быть применена в записи числа), то ее позиция сохраняется в переменной c, в другом случае c=0.

 

Работа с текстовыми файлами



    Текстовый файл описывается:
      var f:text;
  Элементами текстового файла являются символы, которые составляют строки текстового файла
    При вводе/выводе численных данных они автоматически превращаются в значения соответствующего типа при вводе или в последовательность символов соответственно формата вывода при выводе

 

Специальные функции и процедуры работы с текстовыми файлами



    1)

eoln(var t:text): boolean;



      Окончание строки определяется кодами двух символов:
      #13 - CR (возвращение каретки или переход к началу строки)
      #10 - LF (переход на новую строку)
      Оба кода генерируются при нажиме Enter.
      Функция eoln принимает значение true, если достигнуто окончание строки, то есть показатель на текущий символ что обрабатывается стоит на первом с двух символов признака конца строки (#13). В других ситуациях возвращает false.
      Если eof=true, то и eoln=true.

    2)

seekeoln(var f:text):boolean.



      Действие такая же, как и функции eoln, но опускаются пропуски и символы табуляции в средине и в конце строки. Удобно использовать при обработке числовых данных.

    3)

seekeof(var f:text):boolean.



      Действие такая же, как и функции eof, но опускаются пропуски, символы табуляции и переводу строки в конце файла

    4)

settextbuf(var t:text,var buf [;<размер>:word]).



      Процедура переопределяет буфер ввода/вывода (по умолчанию стандартный, 128 байт), что удобно для быстрой обработки текстовых файлов или непосредственного доступа к буферу
      Ограничение:
      а) процедура не используется для открытых файлов;
      б) переобозначенный буфер действует до появления следующей процедуры assign - переопределение файловой переменной
      Параметры:
        buf - любая переменная, что определяет буфер обмена;
        <размер> - необязательный параметр, который определяет размер буферу (иначе равняется размеру переменной buf).

    Функция

sizeof(<идентификатор переменной/типа>):word;

- возвращает размер переменной в байтах

    5)

flush(var f:text).



      Процедура переписывает содержимое буфера к текстовому файлу, открытого для записи (если открытый для чтения - действия нет).
      Используется как дополнительное средство для гарантии того, что все данные, которые записывались в файл, к нему попали. Сам буфер очищается.

    6)

Особенности работы процедур read, write для текстовых файлов.



      Как и при вводе из клавиатуры:
      Read(f,v1,v2,...vn); ~ Read(f,v1);Read(f,v2);...Read(f,vn);
      ReadLn(f,v1,v2,...vn); ~ Read(f,v1);Read(f,v2);...ReadLn(f,vn);
      Read(input,v1,v2,...vn); ~ Read(v1,v2,...,vn);
      аналогично при выводе:
      Write(f,v1,v2,...vn); ~ Write(f,v1);Write(f,v2);...Write(f,vn);
      WriteLn(f,v1,v2,...vn); ~ Write(f,v1);Write(f,v2);...WriteLn(f,vn);
      Write(output,v1,v2,...,vn); ~ Write(v1,v2,...,vn).
    Если список вывода отсутствует, то:
    ReadLn(f); - показатель текущей записи файла f устанавливается на следующую строку (запись), то есть пропускаются все символы к (CR/LF) - признака конца строки
    WriteLn(f); - в файл записываются коды конца строки (CR/LF) то есть пустая строка в текущем месте.


Дата: 2007-11-17   Автор: Admin
Случайный анекдот

- Папа, папа! А что такое "Format C: complete" ?
Дата: 28-10-2004   Автор: Admin   Подрубрика: Компьютеры и дети