ВНЕШНЯЯ СПЕЦИФИКАЦИЯ

Лабораторная работа №1

Задание 1

Введите длину массива B от 1 до <<lmax>>

<k>

Введите массив B из <<k>> элементов

<b[1]>, <b[2]>, …, <b[k]>

<x> <z>
Введите x и z (x<z)

 

До x<z

Нет минимума
При nmin=0

 

Задание 2  
min=<<min>> nmin=<<nmin>>
Иначе

 

Нет массивов A и D
При n=0

 

Массив D из <<n>> элементов <<d[1]>> <<d[2]>>…<<d[n]>>
Иначе

 

Задание 3 Введите x1 y1

 


Массив A из <<n>> элементов <<a[1]>> <<a[2]>>…<<a[n]>>
<x1> <y1>

 

 

ОПИСАНИЕ АЛГОРИТМА НА ПСЕВДОКОДЕ

Алг «Лабораторная работа 1»

Нач

{задание 1}

{ввод исходных данных для задания 1}

ввод (k, B[1:k])

цикл

ввод (x, z)

до x<= z

кц

{инициализация}

nmin := 0 {номер минимума}

min := 1E38 {начальное значение минимума}

циклот i := 1 до k

если b[i] < z и b[i]>=x и b[i] ≤ min то

min := b[i]

nmin := i

все

кц

{анализ существования результата и вывод результата задания 1}

если nmin = 0 то

вывод («Нет минимума»)

иначе

вывод («min=», min, «nmin=», nmin)

все

{задание 2}

цикл от i := 2 до k

если b[i]>b[i-1] то

n := n+1

d[n] := b[i]

все

кц

{анализ существования результата задания 2}

если n = 0 то

вывод («Нет массивов D и A»)

иначе

{вывод результата задания 2}

вывод («Массив D из »,n, «элементов»)

вывод ( D[1:n])

{задание 3}

{ввод исходных данных для задания 3}

ввод (x1, y1)

цикл от i :=1 до n

если d[i] > x1 и d[i]<y1 то

a[i] := d[i]*d[i]

иначе

a[i] :=-d[i]/2

все

кц

{вывод результата задания 3}

вывод («Массив A из », n, «элементов»)

вывод (A[1:n])

все

кон

ЛИСТИНГ ПРОГРАММЫ

{Лабораторная работа 1}

Program lab1;

Const lmax=20;{максимальная длина массивов}

Type mass=array[1..lmax] of real;

Var B,D,A:mass;

i,k,n,nmin:integer;

x,z,x1,y1,min:real;

begin

writeln('Лабораторная работа 1');

{задание 1}

writeln('Задание 1');

{ввод исходных данных для задания 1}

writeln('Введите длину массива B от 1 до ',lmax);

read(k);

writeln('Введите массив B из ',k,' элементов');

for i:= 1 to k do

read(b[i]);

writeln('Введите x и z');

repeat

read(x, z);

until x<z;

{инициализация}

nmin:= 0;{номер минимума}

min:= 1E38;{значение минимума}

for i:= 1 to k do

if (b[i]<z) and (b[i]>=x) and (b[i]<=min) then

begin

min:= b[i];

nmin:= i;

end;

{анализ существования результата и вывод результата задания 1}

if nmin = 0 then

writeln('Нет минимума')

else

writeln('min= ', min, ' nmin= ', nmin);

{задание 2}

writeln('Задание 2');

{ввод исходных данных для задания 2}

n:= 0;{длина массива D}

for i:= 2 to k do

if b[i]>b[i-1] then

begin

n:= n+1;

d[n] := b[i];

end;

{анализ существования результата и вывод результата задания 2}

if n = 0 then

writeln('Нет массивов D и A')

else

begin

{вывод результата задания 2}

writeln('Массив D из ',n, ' элементов');

for i:=1 to n do

write( D[i], ‘ ’);

writeln;

{задание 3}

writeln('Задание 3');

{ввод исходных данных для задания 3}

writeln('введите x1 и y1');

read(x1, y1);

for i:=1 to n do

if (d[i]>x1) and (d[i]<y1) then

a[i]:= d[i]*d[i]

else

a[i]:= d[i]/2;

writeln('Массив A из ',n, ' элементов');

for i:= 1 to n do

write( A[i], ‘ ’);

end;

end.