<<
>>

Файлы

Упражнение № 12. Файловый тип данных. Открытие файла. Чтение и запись Пример 31. Прочитаем файл целых чисел и выведем их на жран: Assign(Fl,'а:int.dat’); {связываем с внешним файлом} Reset(Fl); {открываем его для чтения} While Not EOF (Fl) Do {пока не достигнут конец файла F1} Begin Read(FI,n); {считываем очередное число} Write(n,''); {выводим его на экран} End; Close(Fl); {закрываем файл} Пример 32.
Создадим файл целых чисел с именем Danl.dat, причем ни одно из чисел не равно 0. Решение. Первоначально «свяжем» файловую переменную с конкретным внешним файлом при помощи процедуры Assign. Откроем файл для записи — процедура Rewrite. Конец ввода чисел— ввод числа ноль. Program Example_32; Var F: File Of Integer; n: Integer; Begin Assign(F, 'a:danl.dat'); {связываем с внешним файлом} Rewrite(F); {открываем его для записи} Writeln('конец ввода чисел - О'); Repeat {пока не будет введен 0} Writeln('введите число'); Readln(n); {ввод числа с клавиатуры} {если введено число, отличное от 0, то дописываем его в данную строку файла F1} If noO Then Write (F, n) ; Until n=0; {если ввели 0, то заканчиваем запись данного файла} Close(F); {закрываем файл} End.
Пример 33. В файле Danl.dat записаны целые числа (см. предыдущую задачу). Вычислить сумму элементов и результат вместе с исходными данными записать в файл Dan2.dat. Program Example_33; Var Fl, F2: File Of Integer; {файловые переменные } S, N: Integer; Begin {с именем файла Fl связывается внешний файл на дискете} Assign(Fl,'Danl.dat'); . Reset(Fl); {открытие файла Fl для чтения } {с именем файла F2 связывается внешний файл на дискете} Assign (F2,'Dan2. dat'); Rewrite(F2); {открытие файла F2 для записи} S : =0; • While Not EOf(Fl) Do {проверка на конец файла F1} Begin Read(Fl,N); {чтение элемента из файла F1} Write(F2,N); {запись элемента в файл F2} S:=S+N; {вычисление суммы} End; {запись суммы элементов в конец файла F2} Write(F2,S); Write('Результат находится в файле Dan2.dat') Close(Fl); {закрытие файла Fl для чтения} Close(F2); {закрытие файла F2 для записи} Readln; End.
Задания для самостоятельной работы 1. Дан файл F, компоненты которого являются целыми числами. Найти: а) число элементов; б) наибольшее из значений; если их несколько, то подсчитать число таких элементов; в) среднее арифметическое элементов. 2. Даны символьные файлы Ри G. Записать в файл Н: а) все компоненты файлов F и G; б) все латинские буквы (большие и маленькие) файла F. 3. Дан целочисленный файл А. Записать в файл В все четные числа, а в файл С все нечетные. 4. Даны два файла Аи В (тип элементов одинаковый). Поменять местами содержимое этих файлов. Примечание. Можно решить эту задачу двумя способами. Первый — использовать процедуру Rename, второй — переписать все содержимое первого файла в промежуточный, затем все содержимое второго файла в первый, а теперь вернуть все из промежуточного во второй. Для лучшей реализации второго способа можно написать процедуру, которая будет переписывать все из одного файла в другой. В этом случае в разделе типов надо описать свой тип данных для файловых переменных. 5. Дан символьный файл F. Записать в перевернутом виде элементы файла F в файл G. 6. Даны два файла, причем первый А — целочисленный, то есть его элементы целые числа, а второй В — символьный. Вывести на экран все числа первого, а рядом с ними элементы второго с этим номером, если элемента второго файла с данным номером нет, то сообщить об этом. Упражнение № 13. Текстовые файлы Пример 34. Дан текстовый файл, содержащий только целые числа, в каждой строке может быть несколько чисел, которые разделяются пробелами. Вывести на экран все числа с учетом разбиения на строки и подсчитать число элементов в каждой строке. Решение. Пусть в файле содержится следующая информация:

Этот файл можно создать в среде Turbo Pascal таким образом: • создать новый файл (команда New меню File}; • записать все числа в строках через пробелы; • сохранить его, например «а: intl.dat».

Теперь этот файл будем использовать в программе. Program Example_34; Var F: Text; x, k: Integer; Begin Assign(F, 'a: intl.dan'); {связываем с внешним файлом} Reset(F); {открываем для чтения} While Not Eof(F) Do {пока не конец файла} Begin к :=0; {начальное число элементов строки} While Not Eoln(F) Do {пока не конец строки} Begin Read(F/ х); {считываем очередное число} Write(х,''); {вывод его на экран} Inc(к); {увеличиваем счетчик} End; Writeln ( ' в строке', к, 'элементов'); Readln(F); {переходим к следующей строке файла} End; Close(F); {закрываем файл} Readln; End. Пример 35. Дан текстовый файл, содержащий программу на языке Паскаль. Проверить эту программу на несоответствие числа открывающих и закрывающих круглых скобок. Считать, что каждый оператор программы занимает не более одной строки файла. Решение. Так как по условию задачи каждый оператор занимает не более одной строки, то будем подсчитывать число открывающих и закрывающих скобок в одной строке. Надо заметить, что при проверке правильности расстановки скобок в строке число рассмотренных закрывающих скобок не должно превышать числа уже рассмотренных открывающих скобок. Кроме того, такой файл должен быть создан заранее. Program Example_35; Var F: Text; kl, k2, n: Integer; Ch: Char; Logic,Pp: Boolean; Begin {с именем файла F связывается внешний файл} Assign(F, 'а; Reset(F); {открытие файла F для чтения} п:=0; {счетчик количества строк} Logic:=True; {пока ошибки не определены, то значение True} While Not Eof(F) Do {пока не конец файла} Begin Inc(n); {увеличиваем счетчик количества строк} kl:=0; {счетчики количества открывающих скобок} к2:=0; {счетчики количества закрывающих скобок} Pp:=False; {Рр предназначена для определения ошибки расстановки скобок в строке, начальное значение False, так как пока ошибки расстановки не было} While Not Eoln (F) Do {пока не конец текущей строки файла} Begin Read(F, Ch); {очередной символ строки} {если встретили открывающую скобку, то увеличиваем их счетчик} If Ch = ' (' Then Inc(Kl); {если встречена закрывающая скобка, то если она стоит не раньше открывающей, значение KKK2, поэтому просто увеличиваем счетчик этих скобок, иначе помечаем Рр значением True} , If (Ch = ' ) ' ) Then If (KKK2) Then Inc(K2) Else Pp:=True; End; {если не все закрывающие скобки расставлены (К1
<< | >>
Источник: Могилев А. В.. Практикум по информатике. 2005

Еще по теме Файлы:

  1. МЕТОД КОРРЕКЦИИ ПРОШЛОГО
  2. 7.8. ВНУТРЕННИЙ ПОРЯДОК
  3. Установка программы Астропроцессор ZET
  4. Социальные сети
  5. О программе Астропроцессор ZET
  6. Навыки, хитрости, производительность
  7. Осмотр средств вычислительной техники
  8. Трудолюбивые лентяи
  9. Относитесь к сомнению, как к дружественному напоминанию
  10. ВМЕСТО ЗАКЛЮЧЕНИЯ
  11. 6.1. Институт Гэллапа1
  12. ПРОШЛОГО НЕТ. ЕСТЬ НАША ПАМЯТЬ О ПРОШЛОМ, А ЭТО НЕ ЧТО ИНОЕ, КАК ИЛЛЮЗИЯ.
  13. ЛЕЧЕНИЕ И ПРЕДУПРЕЖДЕНИЕ
  14. 5.2. Техника редактирования таблиц10
  15. Л.О. Доліненко, В.О. Доліненко, С.О. Сарновська. Цивільне право України, 2006
  16. ЦИВІЛЬНЕ ПРАВО УКРАЇНИ
  17. ПЕРЕДМОВА
  18. Частина І ПРОГРАМА КУРСУ «ЦИВІЛЬНЕ ПРАВО УКРАЇНИ»
  19. Розділ І. Загальні положення цивільного права