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

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

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

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

Кафедра ИТАС

ОТЧЕТ

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

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

Вариант___27______

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

__Хомич А._ ____________

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

___________ ____________

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

Группа___АП-11____

Москва 2005

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

1. Постановка задачи 3

2. Описание переменных 3

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

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

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

Самостоятельная работа №2

Цель работы: Алгоритмы циклической структуры.

1. Постановка задачи:

1.Вычислить массив R, в соответствии с формулой :

ri=0.8cos(ax+ih);

где i=1..n,n и x,h,a-заданы:

2.В вычисленном массиве r удалить все положительные элементы, расположенные между максимальным и минимальным элементами.

3.В полученном массиве r подсчитать:

среднее арифметическое элементов, расположенных после максимального.

ЗАМЕЧАНИЕ: все три программы оформить в одной программе;

2. Описание переменных:

n – integer,количество элементов в заданном массиве (задается пользователем);

R [1:n] – array [1..n]of real,заданный массив;

a,x,h – real, задаются пользователем для вычисления эл-ов по данной формуле;

t – real – переменная, в которую заносится выражение формулы (для упрощения);

Результат:

l – integer,количество элементов в отредактированном массиве;

R[1:l] - отредактированный массив;

m – integer – номер максимального эл-та в исходном массиве;

max – real – сам максимальный элемент;

k – integer - номер минимального эл-та в исходном массиве;

min – real - сам минимальный элемент;

y – integer – переменная, необходимая для перестановки номеров макс. и мин. элементов, в случае, когда m>k;

m2– integer – номер максимального элемента в отредактированном массиве, после которого будет считаться среднее арифметическое;

s – real – среднее арифметическое;

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

Алгоритм Terminator2;

НАЧАЛО

Ввод(a,x,h,n,R[1:n])

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

R[i]:=0.8*cos(a*x+i*h)

Кц.

Вывод сообщения (R[i:n])

m:=0

max:=R[1]

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

если R[i]>max то

max:=r[i]

m:=i

все

Кц.

если m=0 то m:=1

вывод сообщения ('Максимальный эл-т массива: ',max,' Его номер: ',m)

k:=0

min:=r[1]

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

если r[i]<min то

min:=r[i]

k:=i

все

Кц.

если k=0 то k:=1

Вывод сообщения ('Минимальный эл-т массива: ',min,' Его номер: ',k)

если m=k то Вывод сообщения (' В данном случае они равны.')

если m>k то

y:=k

k:=m

m:=y

Кц.

l:=0;

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

если (i<=m) или (i>=k) или (r[i]<0) то

l:=l+1

r[l]:=r[i]

все

Кц.

цикл от l:=1 до l

Вывод сообщения (r[l])

Кц.

m2:=0

max:=R[1]

цикл от l:=2 до l

если R[l]>max то

max:=r[l]

m2:=l

все

Кц

если m2=0 то m2:=1

Вывод сообщения ('Максимальный эл-т массива: ',max,' Его номер: ',m2)

s:=0

если (l=1) или (m2+1=0) то Вывод сообщения ('Отсутствуют эл-ты,удовлетворяющие условию.') иначе

цикл от l:=m2+1 до l

s:=s+r[l]

Кц

если s=0 то Вывод сообщения ('Отсутствуют эл-ты,удовлетворяющие условию.') иначе

Вывод сообщения (Среднее арифметическое: ',s/(l-m2))

все

Кц

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

Program Terminator2;

Uses Crt;

Var max,h,min,a,s,x,t:real; l,y,i,n,m,m2,k:integer; R:array [1..100] of real; b:array [1..100] of real; Begin

clrscr;

writeln(' Первая часть');

writeln('Дана формула: R[i]:=0.8*cos(a*x+i*h). Для вычисления эл-ов введите a,x,h,n, где n(n<>0) - кол-во эл-ов:');

read(a,x,h,n);

For i:=1 to n do

begin

t:=(a*x+i*h);

R[i]:=0.8*cos(t);

end;

For i:=1 to n do

begin

write(' ');

write(R[i]);

end;

readkey;

writeln;

writeln(' Вторая часть');

writeln('Теперь найдем номера max и min эл-ов и удалим все положительные числа в этом интервале');

writeln;

m:=0;

max:=R[1];

for i:=2 to n do begin

if R[i]>max then

begin

max:=r[i];

m:=i;

end;

end;

if m=0 then m:=1;

writeln('Максимальный эл-т массива: ',max,' Его номер: ',m);

writeln;

readkey;

k:=0;

min:=r[1];

for i:=2 to n do begin

if r[i]<min then

begin

min:=r[i];

k:=i;

end;

end;

if k=0 then k:=1;

writeln('Минимальный эл-т массива: ',min,' Его номер: ',k);

writeln;

readkey;

if m=k then writeln(' В данном случае они равны.');writeln;

if m>k then

begin

y:=k;

k:=m;

m:=y;

end;

writeln('Массив после отсева эл-ов:');

writeln;

l:=0;

for i:=1 to n do

if (i<=m)or(i>=k)or(r[i]<0) then

begin

l:=l+1;

r[l]:=r[i];

end;

for l:=1 to l do

writeln (r[l]);

writeln;

readkey;

writeln(' Третья часть');

writeln('И,наконец,посчитаем среднее арифметическое эл-ов,стоящих после максимального');

m2:=0;

max:=R[1];

for l:=2 to l do

begin

if R[l]>max then

begin

max:=r[l];

m2:=l;

end;

end;

writeln;

if m2=0 then m2:=1;

writeln('Максимальный эл-т массива: ',max,' Его номер: ',m2);

readkey;

s:=0;

if (l=1)or(m2+1=0) then writeln('Отсутствуют эл-ты,удовлетворяющие условию.') else

begin

for l:=m2+1 to l do

s:=s+r[l];

if s=0 then writeln('Отсутствуют эл-ты,удовлетворяющие условию.') else

writeln (s:4,l-m2:4,' Среднее арифметическое: ',s/(l-m2));

readkey;

end;

end.

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

1. Работает вся программа

Первая часть

Дана формула: R[i]:=0.8*cos(a*x+i*h). Для вычисления эл-ов введите a,x,h,n, где n(n<>0) - кол-во эл-ов:

5

10

23

10

-0,589 -0,144 0,743 -0,647 -0,053 0,704 -0,697 0,039 0,655 -0,737

Вторая часть

Теперь найдем номера max и min эл-ов и удалим все положительные числа в этом интервале

Максимальный эл-т массива: 0,743 Его номер: 3

Минимальный эл-т массива: -0,737 Его номер: 10

Массив после отсева эл-ов:

-0,589 -0,144 0,743 -0,647 -0,053 -0,697 -0,737

Третья часть

И,наконец,посчитаем среднее арифметическое эл-ов,стоящих после максимального

Максимальный эл-т массива: 0,743 Его номер: 3

Среднее арифметическое: -0,534

2. В конце не остается элементов для подсчета среднего арифметического

Первая часть

Дана формула: R[i]:=0.8*cos(a*x+i*h). Для вычисления эл-ов введите a,x,h,n, где n(n<>0) - кол-во эл-ов:

89

46

5

1

-0,570

Вторая часть

Теперь найдем номера max и min эл-ов и удалим все положительные числа в этом интервале

Максимальный эл-т массива: -0,570 Его номер: 1

Минимальный эл-т массива: -0,570 Его номер: 1

В данном случае они равны.

Массив после отсева эл-ов:

-0,570

Третья часть

И,наконец,посчитаем среднее арифметическое эл-ов,стоящих после максимального

Максимальный эл-т массива: -0,570 Его номер: 1

Отсутствуют эл-ты,удовлетворяющие условию.

8

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