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

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

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

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

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

dimitriy7



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

вот условие  
Дан массив действительных чисел С(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.    Назначение файла (Исходные данные)

Всего записей: 2946 | Зарегистр. 09-10-2008 | Отправлено: 00:56 28-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