Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
02.01.2020
Размер:
164.35 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИИ

Новосибирский государственный технический университет

ЛАБОРАТОРНАЯ РАБОТА № 1

по курсу «Информатика и программирование»

«Динамические переменные»

Факультет бизнеса

Группа: ФБИ-11

Студенты: Рыбаченко А.А., Сердюков К.Е.

Преподаватель: Забуга А.А.

Новосибирск

2012г.

Цель: Сформировать практические навыки обработки данных представленных динамическими переменными структурных типов с использованием ссылочных типов, и средств динамического распределения памяти Object Pascal.

Задание:

  1. Для каждого варианта задания разработайте консольное приложение.

  2. Разработайте тестовый набор и выполните тестирование приложения.

  3. Ввод вывод и поиск значений выполняйте с помощью подпрограмм.

Варианты заданий:

  1. В динамическом одномерном массиве (типа T) записей (типа Rec)

const

n = 10; //количество переменных в массиве

type

Rec = record //запись с двумя полями

x,y: real;

end;

PT = ^T;//ссылочный тип указателей на массивы типа T

T = array[0..n-1] of Rec;//тип динамического массива

отыскать и вывести:

  • запись с минимальным значением произведения полей x*y среди записей с чётными значениями индекса;

  • запись с минимальным значением произведения полей x*y среди записей с нечётными значениями индекса;

  • сумму полей x записей с чётными значениями индекса;

  • произведение полей y записей с нечётными значениями индекса;

Тест программы:

program Zada4a11;

{$APPTYPE CONSOLE}

uses

SysUtils;

const

n = 5; //количество переменных в массиве

type

Rec = record //запись с двумя полями

x,y: real;

end;

PT = ^T;//ссылочный тип указателей на массивы типа T

T = array[1..n] of Rec;//тип динамического массива

procedure input(var x:pt);

var i:integer; p:real;

begin

x:=nil;

new(x);

for i:=low(T) to high(T) do

begin

write('Vvedite 4iclo ',i,' po X ');

readln(p);

x^[i].x:=p;

write('Vvedite 4iclo ',i,' po Y ');

readln(p);

x^[i].y:=p;

end;

end;

function MinArr(x:pt;var u:integer):real;

var i:integer;

begin

result:=x^[low(t)+1].x*x^[low(t)+1].y; u:=low(t)+1;

for i:=low(T) to high(T) do

if (result>x^[i].x*x^[i].y) and (i mod 2=0) then

begin result:=x^[i].x*x^[i].y; u:=i; end;

end;

procedure output(x:pt);

var i:integer;

begin

writeln;

writeln('Minimalmoe proizvedenie ravno ',MinArr(x,i):0:2,' v pozicii ',i );

end;

var

p:PT;

begin

input(p);

output(p);

dispose(p);

readln;

end.

Таблица 1.1. Тестовый набор.

Тестовый набор

Номер теста

Исходные данные

Ожидаемый результат

1

X=1,Y=7

X=3,Y=9

X=5,Y=0

X=6,Y=4

X=5,Y=5

24.00

2

X=0,Y=0

X=1,Y=1

X=2,Y=2

X=3,Y=3

X=4,Y=4

1.00

Тест программы:

program Zada4a12;

{$APPTYPE CONSOLE}

uses

SysUtils;

const

n = 5; //количество переменных в массиве

type

Rec = record //запись с двумя полями

x,y: real;

end;

PT = ^T;//ссылочный тип указателей на массивы типа T

T = array[1..n] of Rec;//тип динамического массива

procedure input(var x:pt);

var i:integer; p:real;

begin

x:=nil;

new(x);

for i:=low(T) to high(T) do

begin

write('Vvedite 4iclo ',i,' po X ');

readln(p);

x^[i].x:=p;

write('Vvedite 4iclo ',i,' po Y ');

readln(p);

x^[i].y:=p;

end;

end;

function MinArr(x:pt;var u:integer):real;

var i:integer;

begin

result:=x^[low(t)].x*x^[low(t)].y; u:=low(t);

for i:=low(T) to high(T) do

if (result>x^[i].x*x^[i].y) and (i mod 2<>0) then

begin result:=x^[i].x*x^[i].y; u:=i; end;

end;

procedure output(x:pt);

var i:integer;

begin

writeln;

writeln('Minimalmoe proizvedenie ravno ',MinArr(x,i):0:2,' v pozicii ',i );

end;

var

p:PT;

begin

input(p);

output(p);

dispose(p);

readln;

end.

Таблица 1.2. Тестовый набор.

Тестовый набор

Номер теста

Исходные данные

Ожидаемый результат

1

X=1,Y=1

X=2,Y=2

X=3,Y=3

X=5,Y=5

X=7,Y=7

1.00

2

X=5,Y=9

X=3,Y=7

X=2,Y=9

X=4,Y=5

X=3,Y=7

18.00

Текст программы:

program Zada4a13;

{$APPTYPE CONSOLE}

uses

SysUtils;

const

n = 5; //количество переменных в массиве

type

Rec = record //запись с двумя полями

Соседние файлы в папке Программирование и информатика