Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2021-04-18 | 44 |
5.00
из
|
Заказать работу |
|
|
Разработка модулей проекта
Модуль MY _ Unit _ Def
Содержит определение типа записи и типа массива записей.
unit MY_Unit_Def;
interface
type
TDroby=record
a:integer;
b:integer;
end;
TDar=array of Tdroby;
implementation
end.
Модуль MY_Unit_Input_Output
Содержит операции ввода и вывода записей и массива записей, организованные с помощью процедур стандартного ввода-вывода.
Для выполнения стандартного ввода-вывода требуется включить в интерфейсную часть модуля оператор uses и подключить модули с функциями конвертирования и определения структуры записи и массива.
Unit MY_Unit_Input_Output;
interface
Usesconvertor, MY_Unit_Def;
procedure input_record(var r:Tdroby;var p:boolean);//ввод записи
procedure out_record(var r:Tdroby); //вывод записи
procedure out_Array(var mass:Tdar); //вывод массива дробей
//отображение текстовых значений в формате ASCII
procedure my_writeln(const s:string);
procedure my_write(const s:string);
//заполнение массива
procedure input_Array(var mass:Tdar;var p:boolean);
implementation
//реализация всех подпрограмм интерфейсной части
procedure input_record(var r:Tdroby;var p:boolean);
begin
p:=true;
MY_writeln('Введите дробь');
MY_writeln('Числитель');readln(r.a);
MY_writeln('Знаменатель');readln(r.b);
if (r.a=0) or (r.b=0) then p:=false
else
sokrashenye_droby(r);
end;
procedure input_Array(var mass:Tdar;var p:boolean);
var
otvet:char;
r:TDroby;
i:integer;
begin
i:=0;
MY_writeln('Создание массива завершается по требованию пользователя');
repeat
input_record(r); p:=true;
Add_to_Array(Mass,r);
MY_writeln('Продолжить ввод дробей Y/N');
readln(otvet)
until (otvet='N') or (otvet='n');
end;
procedure out_record(var r:Tdroby);
begin
my_write('Дробь=');
writeln(r.a,'/',r.b);
end;
procedure out_Array(var mass:Tdar);
var
i:integer;
begin
for i:=0 to high(mass) do
with mass[i] do
write(a,'/', b,' ');
end;
procedure my_writeln(const s:string);
begin
writeln(RUSANSI1251_ASCII866(s));
end;
procedure my_write(const s:string);
begin
writeln(RUSANSI1251_ASCII866(s));
end;
Модуль MY _ Unit _ Operation
Содержит подпрограммы, которые реализуют операции над массивом записей.
|
Необходимо включить в интерфейсную часть модуля оператор uses и подключить модули с функциями конвертирования и определения структуры записи и массива.
Unit MY_Unit_Input_Output;
interface
UsesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Rec_droby, MY_Unit_Def;
//сложение двух дробей
function ADD(r1,r2:TDroby):TDroby;
//НОД числ. И знам.
function NOD_a_b(r:TDroby):integer;
//создание дин.масс
procedure Add_to_Array(var Mass:TDar;r:TDroby);
//сложение всех дробей массива
function Add_Mass(Var Mass:TDar):Tdroby;
procedure sokrashenye_droby(var r:Tdroby); //сокращение дроби
implementation
procedure Add_to_Array(var Mass:TDar;r:TDroby);
var
i:word;
begin
i:=high(Mass);
setlength(Mass,i+1);
Mass[i]:=r;
end;
function ADD(r1,r2:TDroby):TDroby;
begin
result.a:=r1.a*r2.b+r1.b*r2.a;
result.b:=r1.b*r2.b;
sokrashenye_droby(result);
end;
function NOD_a_b(r:TDroby):integer;
var
n,m,modr:integer;
begin
n:=r.a;
m:=r.b;
modr:= n mod m;
while modr<>0 do
begin
n:=m;
m:=modr;
modr:=n mod m;
end;
result:=m;
end;
procedure sokrashenye_droby(var r:Tdroby);
var
del:integer;
begin
del:=NOD_a_b(r);
r.a:=r.a div del;
r.b:=r.b div del;
end;
function Add_Mass(Var Mass:TDar):Tdroby;
var
i:integer;
sum:Tdroby;
begin
if length(Mass)=0 then showMessage('Массив дробей не создан')
else
begin
sum.a:=Mass[0].a;
sum.b:=Mass[0].b;
for i:=1 to high(Mass) do
begin
sum:=ADD(sum,Mass[i])
end;
end;
result:=sum;
end;
end.
Пример кода созданного многомодульного проекта
program Drody;
{$APPTYPE CONSOLE}
Uses SysUtils, MY_Unit_Def, Convertor, MY_Unit_Input_Output in MY_Unit_Input_Output.pas, MY_Unit_Operation;
var
r1,r2:TDroby;
mass:TDar;
n,num:byte;
p1,p2:boolean; //признаки заполнения массива
otvet:char;
sum:Tdroby;
begin
P1:=false;P2:=false;
while true do
begin
My_writeln('Набор операций');
My_writeln('1.Формирование одной дроби');
My_writeln('2.Вывод дроби');
My_writeln('3.Создание массива дробей');
MY_writeln('4.Вывод массива');
MY_writeln('5.Сложение всех дробей массива');
MY_writeln('6.Выход');
MY_writeln('Введите номер операции');
Readln(num);
case num of
1: begin
input_record(r1,p1); //p1 - признак заполнения записи
end;
2: begin
if p1 then
out_record(r1)
else
My_writeln('Дробь не введена');
end;
3: begin
input_Array(mass,p2);
end;
4:
if p2 then
out_Array(mass)
else
MY_writeln('Масcив не создан');
5:if p2 then
begin
sum:=ADD_Mass(mass);
MY_write(' Сумма=');
|
out_record(sum);
end
else
MY_writeln('Масcив не создан');
6:halt(0); end end;end.
Контрольные вопросы
1. Из каких 2 –х частей может состоять структура данных – запись?
2. Как называются элементы структуры запись?
3. Какое количество памяти выделяется переменной типа запись, и как размещаются данные в этой переменной?
4. Как обратиться к элементу записи: - простой структуры; - типа массив?
5. Приведите определение структуры данных для хранения сведений о результатах сессии студента, обучающегося в вузе в течении 5 лет и получающего каждую сессию пять оценок.
6. Приведите пример записного типа с вариантной частью.
7. Что такое «уточненное имя»?
8. Как рассчитать количество памяти, выделяемой под переменную – запись?
9. Определите имя элемента в структуре структуры mass:
Type
data=record
Day:1..31; Momth:1..12;Years:word;
End;
Tar=array [byte] of data;
Var mass:Tar;
10. Для чего используется оператор with? Продемонстрируйте его использование при организации ввода данных для примера п.4.
11. Определите структуру для хранения данных линейного многочлена n-ой степени вида и алгоритм для ее заполнения. Подсказка: данными являются коэффициенты и степени; члены многочлена, поступающего на обработку, не обязательно располагаются по возрастанию степеней.
Лабораторная работа 10
|
|
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!