Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_tekhnologii_programmirovania(1).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.4 Mб
Скачать

7.1. Примеры решения заданий

Задача 1. Создать файл целых данных. Найти сумму всех положительных и число отрицательных компонент этого файла.

Решение: Алгоритм решения задачи представлен на рис. 7.1.

Рис. 7.19. Алгоритм решения задачи 1

Программа в Turbo Pascal будет иметь следующий вид:

Program IntFile;

Uses Crt;

Var f: file of Integer;

i,j,s,k: Integer;

st: String;

Begin

ClrScr; {очистка окна}

Write('Введите имя файла >>');

Readln(st);

Assign(f, st);

Rewrite(f);

Write('Файл пуст! Введите элементы файла ');

Writeln('Конец ввода – любое нецелое >>')

Repeat

{$I-};{отключаем проверку ошибки ввода-вывода}

Read(j);

{$I+}

i:=IOResult; {i=0 – нет ошибки ввода-вывода}

If i=0 then Write(f,j);

Until i<>0;

Writeln('Число элементов файла =', Filesize(f));

k:=0; s:=0;

Seek(f,0); {перевод указателя файла на начало}

While not(Eof(f)) do

begin

Read(f,j);

Write(j, ' ');

If j>0 then s:=s+j;

If j<0 then k:=k+1;

End;

Writeln;

Writeln('Сумма положительных = ', s);

Writeln('Число отрицальеных = ', k);

Close(f);

End.

Задача 2. Дан символьный файл f. Записать в файл g компоненты файла f в обратном порядке.

Решение: Алгоритм решения задачи представлен на рис. 7.2.

Программа в Turbo Pascal будет иметь следующий вид:

Program Filef_to_g;

Uses Crt;

Var f,g: File of Char;

ch : Char;

n,i: Word;

Begin

ClrScr;

Assign(f,'file1.dat');

{$I-};{отключаем проверку ошибки ввода-вывода}

Reset(f);

{$I+}

{если файл не существует, создаем новый}

If IOResult<>0 then Rewrite(f);

{если файл пустой, заполняем его}

If FileSize(f)=0 then begin

Writeln('Файл пуст! Введите элементы!');

Write('(вводятся символьные элементы)');

Write('Конец ввода – пропуск символа');

Repeat

{$I-};

Readln(ch);

{$I+};

i:=IOResult;

If i=0 then Write(f,ch);

Until i<>0;

End;

Рис. 7.20. Алгоритм решения задачи 2

Assign(g,'file2.dat');

Rewrite(g);

n:=FileSize(f);

Repeat

Dec(n);

Seek(f,n);

Read(f,ch);

Write(g,ch);

Until n=0;

Close(f);

Close(g);

End.

Элементы файла f читаются с конца в цикле и записываются в файл g. Для позиционирования указателя процедура Seek применяется перед чтением каждого символа.

Задача 3. Написать процедуру для создания двумерного массива и записи его в файл.

Программа в Turbo Pascal будет иметь следующий вид:

Procedure Wr_array;

Var i,j: Integer;

Begin

Assign(f,'array.dat');

{$I-}

Reset(f);

{$I+}

If IOResult=0

then

WriteLn('Файл уже существует')

else

begin

Rewrite(f); {открытие файла для

записи}

For i:=l to n do

For j:=l to n do

A[i,j]:=i*j;

Write(f,A); {запись массива в файл}

Close(f);

WriteLn('Создан новый файл');

End;

End;

7.2. Задания для самостоятельного решения

Задача 1. Создать файл, компонентами которого являются целые числа. Вывести на экран компоненты, позиции которых имеют четные номера, а затем - компоненты, позиции которых имеют нечетные номера.

Задача 2. Даны символьные файлы f1 и f2. Переписать с сохранением порядка компоненты файла f1 в файл f2, а компоненты файла f2 - в файл f1. Использовать вспомогательный файл h.

Задача 3. Дан файл f, компоненты которого являются целыми числами. Никакая из компонент файла f не равна нулю. Числа в файле идут в следующем порядке: десять положительных, десять отрицательных, десять положительных, десять отрицательных и т.д. Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: пять положительных, пять отрицательных, пять положительных, пять отрицательных и т.д.