Скачиваний:
8
Добавлен:
20.05.2014
Размер:
61.95 Кб
Скачать

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ

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

(технический университет)

Кафедра ИТАС.

ОТЧЕТ

ПО ЛАБОРАТОРНОМУ ПРАКТИКУМУ

По дисциплине ”Алгоритмические языки и программирование”

Вариант_27_

Исполнитель Руководитель

_Хомич А __ ____________

(фамилия) (фамилия)

______________ ______________

(подпись) (подпись)

Группа__АП-11__

Москва 2005

Содержание с.

1. Задание 3

2. Метод решения задачи 3

3. Описание алгоритмов на пвседокоде 3

4. Листинг программы 4

5. Распечатка тестов к программе 6

  1. Задание.

Цель работы: Алгоритмы разветвляющейся структуры с циклами.

Дано:

вещественный массив В размерностью К.

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

'О ужас! Не осталось ни одного элемента! Придется начать заново.'

7

Соседние файлы в папке Отчеты по проге паскаль вариант 27