ВНЕШНЯЯ СПЕЦИФИКАЦИЯ
Лабораторная работа №1
Задание 1
Введите длину массива B от 1 до <<lmax>>
<k>
Введите массив B из <<k>> элементов
<b[1]>, <b[2]>, …, <b[k]>
<x> <z> |
До x<z
Нет минимума |
Задание 2 |
min=<<min>> nmin=<<nmin>> |
Нет массивов A и D |
Массив D из <<n>> элементов <<d[1]>> <<d[2]>>…<<d[n]>> |
Задание 3 Введите x1 y1 |
Массив A из <<n>> элементов <<a[1]>> <<a[2]>>…<<a[n]>> |
ОПИСАНИЕ АЛГОРИТМА НА ПСЕВДОКОДЕ
Алг «Лабораторная работа 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.