Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

igorek5555555

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

вот условие
Дан массив действительных чисел С(55). Получить новый массив P из тех элементов массива С, значение которых больше (max+min)/3.
  [more]
ЛАБОРАТОРНАЯ РАБОТА №8
“Программирование с использованием внешних файлов”  
 
Цель работы: Освоение методов составления программ с использованием внешних файлов, а также  закрепление навыков разработки и отладки программ, которые обеспечивают создание файлов, занесение в них информации и чтение информации из файлов.
 
1. Теоретическая часть
 
1.1. Описание файлов в языке программирования Pascal.
 
В Паскале файлы делятся по типу информации, которая заносится в файл:
– типизированные
– текстовые
– нетипизированные
Типизированный файл содержит последовательность компонент любого заданного типа.
Нетипизированный файл содержит последовательность компонент произвольного типа.
Текстовый файл содержит набор любых символов.  
Доступ к файлу в программе происходит с помощью переменных файлового типа. В зависимости от типа файла переменную файлового типа описывают одним из трех способов:  
file of тип – типизированный файл;
text – текстовый файл;
file – нетипизированный файл.  
Примеры описания файловых переменных:  
var
   f1: file of char;
   f2: file of integer;
   f3: file;
   t: text;
До начала работы с файлами необходимо установить связь между файловой переменной и именем физического дискового файла. Это осуществляется с помощью процедуры Assign(f,’ff’). При этом устанавливается связь между файловой переменной с именем f и физическим файлом с именем ‘ff’.
После связи файловой переменной с именем файла в программе нужно указать направление передачи данных (открыть файл). Процедура Reset(f) открывает для чтения файл, с которым связана файловая переменная f. После успешного выполнения процедуры Reset файл готов к чтению из него первого элемента. Процедура Rewrite(f) открывает для записи файл, с которым связана файловая переменная f. После успешного выполнения этой процедуры файл готов к записи в него первого элемента. Если указанный файл уже существовал, то все данные из него уничтожаются.
После окончания работы с файлами на Паскале, они должны быть закрыты с помощью процедуры Close(f).
 
1.2. Чтение и запись файлов в языке программирования Pascal.
 
Чтение из текстового файла осуществляется с помощью процедур Read(f, список переменных) и ReadLn(f, список переменных). Эти процедуры читают информацию из файла f в переменные. Отличие ReadLn от Read в том, что при использовании ReadLn после прочтения данных, указанных внутри скобок в списке переменных пропускаются все оставшиеся символы в данной строке.  
Запись в текстовый файл осуществляется с помощью процедур Write(f, список переменных) и WriteLn(f, список переменных). При записи учитывается формат вывода. WriteLn от Write отличается тем, что после записи всех значений из переменных записывается еще и метка конца строки (формируется законченная строка файла).  
Добавление информации к концу файла осуществляется с помощью процедуры Append(f), которая открывает текстовый файл для добавления информации к его концу.  
 
1.3 Пример составления алгоритма и программы на языке Pascal для обработки одномерных массивов с использованием внешних файлов.
 
Задание: Для массива вещественных чисел A(40) выполнить ввод элементов из текстового файла. Вывести на экран все элементы массива. Разделить в массиве все элементы на среднее арифметическое значение, вывести результат в текстовый файл и на экран.
Решение.
Для объявления массива A опишем в разделе Type тип массива из 40 вещественных чисел. Для обозначения количества элементов массива A введем переменную n.  
 Для решения задачи организуем в программе 4 процедуры:
– ввод элементов массива из файла,  
– вывод элементов массива на экран,
– вывод элементов массива в файл,
– поиск среднего значения в массиве и деление всех элементов массива на среднее значение.
Процедуру ввода элементов массива из файла назовем EnterMassivFile, в списке формальных параметров укажем следующие переменные: количество элементов в массиве N и массив X. При этом в списке формальных параметров массив должен быть указан со служебным словом var, поскольку значения элементов массива изменяются в процедуре и возвращаются в основную программу. Внутри процедуры введем локальную переменную файлового типа f:text, которую свяжем с файлом с именем MassivA.txt. Для считывания данных из файла откроем его с помощью процедуры reset(f).
Процедуру вывода элементов массива на экран назовем PrintMassiv, и будем в нее передавать те же переменные: количество элементов в массиве N и массив X.
Процедуру вывода элементов массива в файл назовем PrintMassivFile, будем в нее передавать те же переменные: количество элементов в массиве N и массив X. Внутри процедуры введем локальную переменную файлового типа f:text, которую свяжем с файлом с именем ResultA.txt. Для записи данных в файл откроем его с помощью процедуры rewrite(f).
Функцию поиска среднего значения и деления на него всех элементов массива назовем ChangeMassiv, и будем в нее также передавать массив X и количество элементов в массиве N. Внутри функции будем использовать локальную переменную Sred для подсчета среднего значения.  
Решение задачи можно организовать также без использования подпрограмм. В этом случае, поскольку в программе используются два разных текстовых файла, необходимо описать две файловые переменные f1,f2:text.
 
1.3.1 Текст программы с использованием подпрограмм на языке Pascal выглядит следующим образом:
 
program primer81;
uses crt;
type
 mas=array[1..40] of real;
var
 n:byte;
 A:mas;
procedure EnterMassivFile(n:byte; var X:mas);
var
 i:byte;
 f:text;
begin
 assign(f,'MassivA.txt');
 reset(f);
 for i:=1 to n do read(f,A[i]);
 close(f);
end;
procedure PrintMassivFile(n:byte; X:mas);
var
 i:byte;
 f:text;
begin
 assign(f,'ResultA.txt');
 rewrite(f);
 for i:=1 to n do
  begin
   write(f,A[i]:7:2);
   if i mod 10=0 then writeln(f);
  end;
 close(f);
end;
procedure PrintMassiv(n:byte; X:mas);
var
 i:byte;
begin
 for i:=1 to n do
  begin
   write(A[i]:7:2);
   if i mod 10=0 then writeln;
  end;
end;
procedure ChangeMassiv(n:byte;var X:mas);
var
 Sred:real;
 i:byte;
begin
 Sred:=0;
 for i:=1 to n do Sred:=Sred+A[i];
 Sred:=Sred/n;
 writeln('Srednee znachenie v massive A ', Sred:7:2);
 for i:=1 to n do A[i]:=A[i]/Sred;
end;
Begin
 clrscr;
 n:=40;
 EnterMassivFile(n,A);
 writeln('Isxodniy massiv A:');
 PrintMassiv(n,A);
 ChangeMassiv(n,A);
 writeln('Resultat: Kajdiy element massiva A razdelen na srednee znachenie');
 PrintMassiv(n,A);
 PrintMassivFile(n,A);
 readkey;
end.
 
1.3.2 Текст программы без использования подпрограмм на языке Pascal выглядит следующим образом:
program primer82;
uses crt;
type
 mas=array[1..40] of real;
var
 i,n:byte;
 A:mas;
 Sred:real;
 f1,f2:text;
begin
 clrscr;
 n:=40;
 assign(f1,'MassivA.txt');
 reset(f1);
 for i:=1 to n do
   read(f1,A[i]);
 close(f1);
 writeln('Isxodniy massiv A:');
 for i:=1 to n do
  begin
   write(A[i]:7:2);
   if i mod 10=0 then writeln;
  end;
 Sred:=0;
 for i:=1 to n do
   Sred:=Sred+A[i];
 Sred:=Sred/n;
 writeln('Srednee znachenie v massive A ', Sred:7:2);
 for i:=1 to n do
   A[i]:=A[i]/Sred;
 assign(f2,'ResultA.txt');
 rewrite(f2);
 for i:=1 to n do
  begin
   write(f2,A[i]:7:2);
   if i mod 10=0 then writeln(f2);
  end;
 close(f2);
 writeln('Resultat: Kajdiy element massiva A razdelen na srednee znachenie');
 for i:=1 to n do
  begin
   write(A[i]:7:2);
   if i mod 10=0 then writeln;
  end;
 readkey;
end.
 
1.3.3 Результаты работы программы:
 
Результаты с экрана
Isxodniy massiv A:
   1.50   0.00  23.00  15.00 100.00  10.00  -8.20  11.00  -0.90   0.10
  22.00  33.00  30.50   1.00   7.90 -94.00  30.00   5.00  -1.90  -3.00
  10.00   1.00  23.00   2.00   8.00   6.00  -5.00   0.00   0.40   7.60
  -3.00   2.00  -5.50   0.00   9.00  19.00  27.50  11.00  20.10   1.00
 
Srednee znachenie v massive A    7.90
 
Resultat: Kajdiy element massiva A razdelen na srednee znachenie
   0.19   0.00   2.91   1.90  12.65   1.27  -1.04   1.39  -0.11   0.01
   2.78   4.18   3.86   0.13   1.00 -11.89   3.80   0.63  -0.24  -0.38
   1.27   0.13   2.91   0.25   1.01   0.76  -0.63   0.00   0.05   0.96
  -0.38   0.25  -0.70   0.00   1.14   2.40   3.48   1.39   2.54   0.13
 
Файл MassivA.txt
1.5 0 23 15 100 10 -8.2 11 -0.9 0.1
22 33 30.5 1 7.9 -94 30 5 -1.9 -3
10 1 23 2 8 6 -5 0 0.4 7.6
-3 2 -5.5 0 9 19 27.5 11 20.1 1
 
Файл ResultA.txt
   0.19   0.00   2.91   1.90  12.65   1.27  -1.04   1.39  -0.11   0.01
   2.78   4.18   3.86   0.13   1.00 -11.89   3.80   0.63  -0.24  -0.38
   1.27   0.13   2.91   0.25   1.01   0.76  -0.63   0.00   0.05   0.96
  -0.38   0.25  -0.70   0.00   1.14   2.40   3.48   1.39   2.54   0.13
 
 
2. Практическая часть
 
2.1 Требования к выполнению работы:
 
Составить блок-схему алгоритма и программу для решения индивидуального задания. В программе предусмотреть ввод исходных массивов из внешнего текстового файла либо вывод результатов во внешний текстовый файл в соответствии с заданием.
Предусмотреть вывод на экран исходных и результирующих массивов, подробных промежуточных и конечных результатов.
Задание выполнить с использованием подпрограмм либо без их использования по выбору студента.
Порядок выполнения работы.
1. Выполнить анализ задания, сформулировать постановку задачи.
2. Составить блок-схему алгоритма.
3. Подготовить файл исходных данных (если по заданию массив вводится из файла).
4. Составить программу на языке Pascal с использованием внешних файлов. Предусмотреть ввод исходных данных и вывод результатов на экран.
5. Выполнить проверку работоспособности программы на различных исходных данных.
6. Выполнить анализ полученных результатов.
7. В отчете предоставить также текст используемых в программе внешних файлов.
 
2.2 Варианты индивидуальных заданий.
 
Варианты индивидуальных заданий выбираются из таблицы 8 в соответствии с номером студента в списке группы в журнале преподавателя.  
Таблица 8. Варианты индивидуальных заданий  
№ п/п    Задание    
 
Дан массив действительных чисел С(35). Получить новый массив P из тех элементов массива С, значение которых больше (max+min)/3.    Назначение файла (Исходные данные)
 

Всего записей: 13 | Зарегистр. 22-12-2011 | Отправлено: 00:34 23-12-2011 | Исправлено: igorek5555555, 00:38 23-12-2011
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru