Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Топ:
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
|
из
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
|
|
|
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!