
Отчеты по проге паскаль вариант 27 / Отчет №1
.docМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ
ЭЛЕКТРОНИКИ И МАТЕМАТИКИ
(технический университет)
Кафедра ИТАС.
ОТЧЕТ
ПО ЛАБОРАТОРНОМУ ПРАКТИКУМУ
По дисциплине ”Алгоритмические языки и программирование”
Вариант_27_
Исполнитель Руководитель
_Хомич А __ ____________
(фамилия) (фамилия)
______________ ______________
(подпись) (подпись)
Группа__АП-11__
Москва 2005
Содержание с.
1. Задание 3
2. Метод решения задачи 3
3. Описание алгоритмов на пвседокоде 3
4. Листинг программы 4
5. Распечатка тестов к программе 6
-
Задание.
Цель работы: Алгоритмы разветвляющейся структуры с циклами.
Дано:
вещественный массив В размерностью К.
1.Найти max (Bi,……., Bk) для Bi<0 и определить его порядковый номер.
2.Сформировать массив D, элементы которого вычисляются следующим образом:
Dj=Bi, если z<Bi<z1;(z,z1-заданы);
3.Сформировать массив A:
Ai= -Di, если Di>x1,
y1, в противном случае. (x1,y1-заданы).
ЗАМЕЧАНИЕ: все три части оформить в одной программе.
2. Внешняя спецификация.
Вводится непосредственно пользователем:
k – integer,количество элементов в заданном массиве;
B [1:k] – array [1..k]of real – массив, задаваемый пользователем;
Z, Z1, X1, Y1– integer,заданы в задачах;
Результат:
X – количество элементов в отредактированном массиве.
A[1:x] - отредактированный массив;
3. Описание алгоритмов на пвсевдокоде.
Алг. Droid;
Нач.
Ввод(z,z1,k,X1,Y1B[1:n]
Цикл от i:=1 до k
если b[i]<0 то
max:=b[i];
i:=k;
все
Кц.
Цикл от i:=1 до k
если (b[i]<0) and (b[i]>max) то
max:=b[i];
l:=i;
все
Кц.
если max=0 то вывод сообщения
иначе вывод сообщения
x:=0;
Цикл от i:=1 до k
если (b[i]>z) and (b[i]<z1) то
x:=x+1;
d[x]:=b[i];
все
Кц.
если x=0 то
вывод сообщения
иначе
вывод (d[x]);
Цикл от i:=1 до x
если d[i]>x1 то a[i]:=-d[i]
иначе a[i]:=y1;
все
Кц
если i=1 то вывод (a[i])
все
Конец.
4.Листинг программы.
program Droid;
uses crt;
var b:array [1..100] of integer;
d:array [1..100] of integer;
a:array [1..100] of integer;
m, l,z,z1,x,k,min,max,i,t,j,X1,Y1:integer;
begin
clrscr;
writeln ('Добрый день! Вас приветствует адская программа №1. Нажмите Anykey для начала.');
readkey;
writeln ('Введите количество элементов подопытного массива. Я оставлю больший из отрицательных элементов.');
readln (k);
writeln ('Введите ',k,' элементов.');
for i:=1 to k do
readln (b[i]);
for i:=1 to k do
if b[i]<0 then begin
max:=b[i];
i:=k;
end;
for i:=1 to k do
if (b[i]<0) and (b[i]>max) then
begin
max:=b[i];
l:=i;
end;
if max=0 then
writeln ('Нет ни одного числа, удовлетворяющего условию x<0. Попробуйте заново.') else writeln ('Искомый элемент: ',max,' Его порядковый номер: ',l,'. Для продолжения нажмите Anykey.');
readkey;
writeln ('Теперь с вашей помощью мы оставим только те элементы,которые лежат в промежутке z < x < z1');
writeln ('Введите z');
readln(z);
writeln ('Введите z1');
readln(z1);
x:=0;
for i:=1 to k do
if (b[i]>z) and (b[i]<z1) then
begin
x:=x+1;
d[x]:=b[i];
end;
if x=0 then
writeln ('О ужас! Не осталось ни одного элемента! Придется начать заново.') else
writeln ('Итак, перед Вами избранные элементы:');
for x:=1 to x do writeln (d[x]);
writeln ('Вы дошли до заключительного уровня. Жмите Anykey!');
readkey;
Writeln ('Итак, теперь сформируем новый массив A из предыдущего-D(Если он еще есть).Ai=-Di,если Di>x1,Y1-в противном случае'); writeln ('Необходимо ввести x1');
readln(x1);
writeln('Также введите y1');
readln(y1);
for i:=1 to x do
begin
if d[i]>x1 then a[i]:=-d[i]
else a[i]:=y1;
end;
if i=1 then writeln ('Т.к. еще до этого пункта эл-ов не осталось, то их не будет и в ответе...');
for i:=1 to x do
writeln ('Если Вы ничего не напутали, то вот ',i,' эл-т: ',a[i]);
readln;
end.
4. Распечатка тестов к программе.
1. Работает вся программа.
Первая часть.
‘Введите количество элементов подопытного массива. Я оставлю больший из отрицательных элементов’
6
'Введите 6 элементов’
4
-6
5
1
-3
10
'Искомый элемент: -3 Его порядковый номер: 5. Для продолжения нажмите Anykey.'
Вторая часть.
'Теперь с вашей помощью мы оставим только те элементы,которые лежат в промежутке z < x < z1')
'Введите z'
-4
'Введите z1'
9
'Итак, перед Вами избранные элементы:'
4
5
1
-3
Третья часть.
'Итак, теперь сформируем новый массив A из предыдущего-D(Если он еще есть).Ai=-Di,если Di>x1,Y1-в противном случае'
'Необходимо ввести x1'
3
'Также введите y1'
100
'Если Вы ничего не напутали, то вот 1 эл-т: ' -4
'Если Вы ничего не напутали, то вот 2 эл-т: ' -5
'Если Вы ничего не напутали, то вот 3 эл-т: ' 100
'Если Вы ничего не напутали, то вот 4 эл-т: ' 100
2. Не остается эл-ов в конце 1-ой части.
‘Введите количество элементов подопытного массива. Я оставлю больший из отрицательных элементов’
6
'Введите 6 элементов’
4
6
5
1
3
10
'Нет ни одного числа, удовлетворяющего условию x<0. Попробуйте заново.'
3. Не остается эл-ов в конце 2-ой части.
Первая часть.
‘Введите количество элементов подопытного массива. Я оставлю больший из отрицательных элементов’
6
'Введите 6 элементов’
4
-6
5
1
-3
10
'Искомый элемент: -3 Его порядковый номер: 5. Для продолжения нажмите Anykey.'
Вторая часть.
'Теперь с вашей помощью мы оставим только те элементы,которые лежат в промежутке z < x < z1')
'Введите z'
14
'Введите z1'
20
'О ужас! Не осталось ни одного элемента! Придется начать заново.'