
Отчеты по проге паскаль вариант 27 / Отчет №2
.doc
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ
ЭЛЕКТРОНИКИ И МАТЕМАТИКИ
(технический университет)
Кафедра ИТАС
ОТЧЕТ
ПО ЛАБОРАТОРНОМУ ПРАКТИКУМУ
по дисциплине “Алгоритмические языки и программирование”
Вариант___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
Отсутствуют эл-ты,удовлетворяющие условию.