Файлы. файловый тип данных. открытие файла.

запись и Чтение

Пример 25.Прочтём файл целых чисел и выведем их на экран(Ответа везде приводятся для версии Turbo Pascal)

Assign(Fl,’a:int.dat’); {связываем с внешним файлом}

Reset(Fl); {открываем его для чтения}

While Not EOF (Fl) Do {пока не достигнут финиш файла F1}

Begin

Read(Fl,n); {считываем очередное число}

Write(n, ‘ ‘); {выводим его на экран} End;

Close(Fl); {закрываем файл}

Пример 26.Создадим файл целых чисел с именем Dan1.dat, причем ни одно из чисел не равняется 0.

Ответ. Первоначально «свяжем» файловую переменную с конкретным внешним файлом при помощи процедуры Assign. Откроем файл для записи — процедура Rewrite. Финиш ввода чисел — ввод числа ноль.

Program Example_26;

Var F: File Of Integer/

n: Integer;

Begin

Assign(F, ‘a:danl.dat’); {связываем с внешним файлом}

Rewrite(F); {открываем его для записи}

Writeln(‘финиш ввода чисел — О1);

Repeat {пока не будет введен 0}

Writeln(‘введите число’); Readln(n); {ввод числа с клавиатуры}

{в случае если введено число, хорошее от 0,

то дописываем его в данную строчок файла F1}

If n0 Then Write (F, n) ;

Until n=0/ {в случае если ввели 0, то заканчиваем запись данного файла} Close(F); {закрываем файл}

End.

Пример 27.В файле Da1l.dat записаны целые числа (см. прошлую задачу). Вычислить результат и сумму элементов вместе с исходными разрешёнными записать в файл Dan2.dat.

Program Example_27;

Var Fl, F2: File Of Integer; {файловые переменные }

S, N: Integer;

Begin

{с именем файла Fl связывается внешний файл на дискете} Assign(Fl,’Danl.dat’); Reset(Fl)/

{открытие файла Fl для чтения }

{с именем файла F2 связывается внешний файл на дискете} Assign(F2,’Dan2. dat1’);

Rewrite(F2);{открытие файла F2 для записи} S:=0;

While Not EOf(Fl) Do {проверка на конец файла семь дней}

Begin

Read(Fl,N); {чтение элемента из файла Fl}

Write(F2,N); {запись элемента в файл F2}

S:=S+N/ {вычисление суммы} End;{запись суммы элементов в финиш файла F2}

Write(F2,семь дней) ;

Write(‘Итог находится в файле Dan2.dat1)

Close(F1); {закрытие файла F1 для чтения}

Close(F2); {закрытие файла F2 для записи}

Readln;

End.

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

Пример 28. Дан текстовый файл, содержащий лишь целые числа, в каждой строке возможно пара чисел, каковые разделяются пробелами. Вывести на экран все числа с учетом разбиения на строчки и подсчитать число элементов в каждой строке.

Ответ. Пускай в файле содержится следующая информация:

132 456 87 656 5765

45 12 34 76

524 6253 3 233 323 38764

Данный файл возможно создать в среде Turbo Pascal так:

• создать новый файл (команда New меню File);

• записать все числа в строчках через пробелы;

• сохранить его, к примеру «а: int1.dat».

Сейчас данный файл будем применять в программе.

Program Exarnple_29;

Var F: Text;

x, k: Integer;

Begin

Assign(F, ‘a:intl.dan1); {связываем с внешним файлом}

Reset(F); {открываем для чтения}

While Not Eof(F) Do {пока не финиш файла}

Begin

k:=0; {начальное число элементов строчка}

While Not Eoln(F) Do {пока не финиш строчка} Begin

Read(F, x); {считываем очередное число}

Write(х,’’); {вывод его на экран} Inc(к); {увеличиваем счетчик} End;

Writeln(‘ в строчке’, к,’элементов’);

Readln(F); {переходим к следующей строчку файла}

End;

Close(F); {закрываем файл}

Readln;

End.

Массивы

Пример29. Отыскать сумму пяти целых чисел.

Ответ. Для решения данной задачи нужно обрисовать пять переменных для целых чисел и еще одну — для их суммы. Обозначим первые как al, а2, а3, а4 и a5, а их сумму s. Тогда возможно разработать такую программу, применяя функцию нахождения суммы пяти чисел:

Program Example_29;

Var al,a2,a3,a4,a5,s: Integer;

Function Sum(xl,x2,x3,x4,x5: Integer): Integer;

Begin

Sum:=xl+x2+x3+x4+x5;

End;

Begin

Writeln ( ‘ введите пять целых чисел’);

Readln(al,a2,аЗ,а4,а5); {вводим пять целых чисел}

s:=Sum(al,а2,аЗ,а4,а5); {находим их сумму}

Writeln(‘их сумма равна !,s); {вывод результата на экран}

Readln;

End.

А как отыскать сумму, к примеру, 100 целых чисел? Тут нужно применять массив.

Пример 30.Разработать программу нахождения суммы элементов массива.

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

Program Exaraple_30;

Const n=30; {n — это число элементов массива}

Type myarray=Array[1..n] Of Integer;

Var A: myarray; s: Integer;{s — значение данной переменной будет равняется сумме всех элементов массива}

ProcedureInitl(Var m: myarray);

Var i: Integer;

{i — это переменная для работы с элементами массива}

Begin

Writeln(‘введите ‘,п, ‘ чисел’);

For i:=l To n Do {ввод массива с клавиатуры}

Readln(m[i]); {чтение i-ro элемента}

End;

Procedure Print(m: myarray);

Var i: Integer;

Begin

For i:=l To n Do {вывод массива}

Write(m[i]: 3); {вывод i-го элемента}

Writeln;

End;

Function Sum(m: myarray): Integer;

Var i, sum: Integer;

Begin

sum:=0; {начальное значение суммы}

For i:=l To n Do

sum:=sum+m[i]; {к уже отысканной сумме

первых (i-1) элементов прибавляем i-й элемент}

End;

Begin

Initl(A); {обращение к процедуре формирования}

Print(А); {вывод массива}

s:=Sum(A); {нахождение суммы элементов}

Writeln(‘их сумма равна ‘,s); {вывод результата на экран}

Readln;

End.

Первый метод задания одномерного массива — это задание с клавиатуры (он был рассмотрен в примере выше — процедура Initl).

Второй метод задания — это задание посредством генератора случайных чисел; данный метод более эргономичен, в то время, когда большое количество элементов в массиве.

Пример 31. Разработаем распечатки и программу заполнения одномерного массива посредством генератора случайных чисел. Процедура вывода уже составлена ранее, а процедуру формирования напишем новую.

Program Example_31;

Const n=30; dd=51;

{n — это число элементов массива, dd — для генератора случайных чисел}

Type myarray = Array [l..n] Of Integer;

Var A: myarray;

Procedure Init2(Var m:myarray);

{процедура заполнения (инициализации) массива случайными числами}

Var i:Integer;

Begin

For i:=l To n Do m[i]:=-25+Random(dd);

{Random выбирает случайное число из отрезка от 0 до dd-1, тогда i-му элементу массива будет присвоена сумма выбранного случайного числа и -25, так, массив будет заполняться случайными числами от -25 до -25+(dd-1), другими словами до -26+dd}

End;

Procedure Print(m:myarray); {процедура вывода (распечатки) массива}

Begin

Randomize; {включение генератора случайных чисел}

Init2(А); {обращение к процедуре заполнения массива}

Print(А); {обращение к процедуре вывода заполненного массива} Readln;

End.

ЧТО В случае если ДАТЬ ПАУКУ АРБУЗ БАБКИ ГРЕННИ В реальности В МАЙНКРАФТЕ НУБИК В MINECRAFT Мультфильм

Похожие статьи:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector