
- •Технологии программирования
- •Содержание
- •Линейные алгоритмы
- •1.1. Примеры решения заданий
- •1.2. Задания для самостоятельного решения
- •1.3. Задания для контрольной работы
- •Алгоритмы с разветвлениями
- •2.1. Примеры решения заданий
- •2.2. Задания для самостоятельного решения
- •2.3. Задания для контрольной работы
- •Алгоритмы с циклами
- •3.1. Примеры решения заданий
- •3.2. Задания для самостоятельного решения
- •3.3. Задания для контрольной работы
- •Одномерные массивы
- •4.1. Примеры решения заданий
- •4.2. Задания для самостоятельного решения
- •4.3. Задания для контрольной работы
- •Двумерные массивы
- •5.1. Примеры решения заданий
- •5.2. Задания для самостоятельного решения
- •5.3. Задания для контрольной работы
- •6.1. Примеры решения заданий
- •6.2. Задания для самостоятельного решения
- •6.3. Задания для контрольной работы
- •7.1. Примеры решения заданий
- •7.2. Задания для самостоятельного решения
- •7.3. Задания для контрольной работы
- •8.1. Примеры решения заданий
- •8.2. Задания для самостоятельного решения
- •8.3. Задания для контрольной работы
- •Контрольная работа
- •Список использованных источников
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 числа шли в следующем порядке: пять положительных, пять отрицательных, пять положительных, пять отрицательных и т.д.