Смекни!
smekni.com

Отчет по лабораторной работе №2 (стр. 1 из 2)

МОСКОВСКИЙ ИНСТИТУТ РАДИОТЕХНИКИ,

ЭЛЕКТРОНИКИ И АВТОМАТИКИ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Отчет по лабораторной работе №2

Программирование на языках В/У

Студент:

Группа:

Москва 2003


СОДЕРЖАНИЕ

1 ЗАДАНИЕ 3

2 БЛОК-СХЕМА ПРОГРАММЫ 3

3 ТЕКСТ ПРОГРАММЫ 5

4 ОПИСАНИЕ РАБОТЫ ПРОГРАММЫ 6

5 РУКОВОДСТВО ОПЕРАТОРА 10


1 ЗАДАНИЕ

Многочлен

с целыми коэффициентами представить в виде списка. Программа должна проверять на равенство многочлены P и Q.

2 БЛОК-СХЕМА ПРОГРАММЫ


да


нет


нет


да


да


нет

нет

да

Нет


Да


Нет Да


Нет


Да

Write('P = Q');

b:=true;


Нет Да


Нет

Да


Да Нет

3 ТЕКСТ ПРОГРАММЫ

Program Project1;

{$APPTYPE CONSOLE}

Uses SysUtils;

type

spisok=^s;

s=record a,n:Integer; p:spisok; end;

var

k,m:word; b:boolean; P,Q,FstP,LP,FstQ,LQ:spisok;

BEGIN

{ФОРМИРОВАНИЕ СПИСКОВ P и Q}

Write('Kol. Elementov P:> '); ReadLn(k);

FOR m:=1 to k do BEGIN

New(P);

Write('Koef. :> '); ReadLn(P^.a); Write('Step. :> '); ReadLn(P^.n);

P^.p:=nil;

IF m=1 THEN begin FstP:=P; LP:=P; end

ELSE begin LP^.p:=P;LP:=P; end;

END;

Write('Kol. Elementov Q:> '); ReadLn(k);

FOR m:=1 to k do BEGIN

New(Q);

Write('Koef. :> '); ReadLn(Q^.a);

Write('Step. :> '); ReadLn(Q^.n);

Q^.p:=nil;

IF m=1 THEN begin FstQ:=Q; LQ:=Q; end

ELSE begin LQ^.p:=Q;LQ:=Q; end;

END;

{ПРОГРАММА}

P:=FstP;Q:=FstQ;

REPEAT

If ((P^.p<>nil) and (Q^.p=nil)) or ((P^.p=nil) and (Q^.p<>nil)) Then

Begin Write('P <> Q'); b:=true; End;

If (P^.p=nil) and (Q^.p=nil) Then Begin

If (P^.a=Q^.a) and (P^.n=Q^.n) Then Begin Write('P = Q'); b:=true; End

Else Begin Write('P <> Q'); b:=true; End;

End;

If (P^.p<>nil) and (Q^.p<>nil) Then BEGIN

If (P^.a=Q^.a) and (P^.n=Q^.n) Then Begin P:=P^.p; Q:=Q^.p; End

Else Begin Write('P <> Q'); b:=true; End;

END;

UNTIL b=true;

ReadLn;

END.


4 ОПИСАНИЕ РАБОТЫ ПРОГРАММЫ

ТАБЛИЦА ТИПОВ, ИСПОЛЬЗУЕМЫХ ПРОГРАММОЙ

Имя типа

Тип

Назначение

spisok

Динамическая переменная со структурой s

s

record

Запись, содержащая переменные типа integer (а, n) и ссылку (p). а используется для записи значения коэффициента многочлена, а n для степени при которой стоит этот коэффициент

ТАБЛИЦА ПЕРЕМЕННЫХ, ИСПОЛЬЗУЕМЫХ ПРОГРАММОЙ

Имя

Тип

Назначение

m

Word

Счетчик циклов

k

Word

Количество элементов в многочленах

b

boolean

Признак нахождения результата сравнения списков P и Q

P

spisok

Указатель, содержащий адрес произвольного элемента списка Р

Q

spisok

Указатель, содержащий адрес произвольного элемента списка Q

FstP

spisok

Указатель, содержащий адрес первого элемента списка Р

FstQ

spisok

Указатель, содержащий адрес первого элемента списка Q

LP

spisok

Указатель, содержащий адрес последнего элемента списка Р

LQ

spisok

Указатель, содержащий адрес последнего элемента списка Q


Вначале работы программа выводит на экран строку "Kol. Elementov P:>", после чего необходимо ввести значение количества элементов, которые будут записываться в список P. Затем происходит считывание этого значения и переменной k присваивается это значение.

Далее организуется цикл для ввода коэффициентов (а) и степеней каждого отдельного элемента (n) списка Р, начиная с элемента имеющего наибольшую степень и заканчивая коэффициентом элемента имеющего наименьшую степень. Цикл организуется операторами FOR и TO. Начиная с m, принимающего значение 1, до значения переменной k (количество элементов в списке) программа выполняет следующее:

- С помощью процедуры New резервирует место в памяти ЭВМ под динамическую переменную, адрес которой содержит указатель P.

- Выводит на экран строку, в которой написано "Koef. :>". После вывода строки программа ждет ввода значения коэффициента элемента. После ввода значения оно присваивается в поле а динамической переменной структуры s, на которую ссылается указатель Р.

- Выводит на экран строку, в которой написано "Step. :>". После вывода строки программа ждет ввода значения степени элемента. После ввода значения оно присваивается в поле n динамической переменной структуры s, на которую ссылается указатель Р. В поле p записывается значение nil.