Алгоритм получения элементов вектора
| ||||||||
Алгоритм вычисления среднегеометрического значения
3.4 Алгоритм определения минимального по модулю элемента среди не принадлежащих [a/2,b/2] элементов второй трети массива
Упорядочение массива
Таблицы переменных задачи
Таблица переменных основного алгоритма
Смысл переменных | Обозначение | Тип переменной | Примечания | |
в алгоритме | в программе | |||
Исходные данные: Вариант расчёта Размер массива Наименьшее значение элемента Наибольшее значение элемента | Vr n a b | Vr n a b | Целый Целый Целый Целый | VrÎZ 1< n <100 a Î[-32761; 32767] b Î[-32761; 32767] a <=b |
Промежуточные данные: Номер элемента массива | i | i | Целый | i= |
Результаты: Среднегеометрическое значение вектор | Sg R | sg R | Веществ. Одномерный массив | SgÎR |
Таблица переменных алгоритма получения вектора (Part_1)
Смысл переменных | Обозначение
| Тип переменной | Примечания | |||
в алгоритме | в программе | |||||
Входные данные: Вариант расчёта Наименьшее значение элемента Наибольшее значение элемента | Vr n a b | Vr n a b | Целый Целый Целый Целый | VrÎZ 1< n <100 a Î[-32761; 32767] b Î[-32761; 32767] a <=b | ||
Промежуточные данные: Номер элемента массива | i | i | Целый | i= | ||
Выходные данные: Массив | R | R | Одномерный массив | riÎ[a;b] |
Таблица переменных алгоритма вычисления среднегеометрического значения (Part_2)
Смысл переменных | Обозначение | Тип переменной | Примечания | |
в алгоритме | в программе | |||
Входные данные: Размер массива Массив | n R | n R | Целый Одномерный массив | nÎN riÎ[a;b] |
Промежуточные данные: Номер элемента массива Количество нужных элементов Произведение | i k P | i k P | Целый Целый Целый | i= k≥0 PÎ Z |
Выходные данные: среднегеометрическое значение | Sg | Sg | Вещественный | SgÎ R |
|
|
Таблица переменных алгоритма определения минимального элемента (Part_3)
Смысл переменных | Обозначение | Тип переменной | Примечания | |
в алгоритме | в программе | |||
Входные данные: Размер массива Наименьшее значение элемента Наибольшее значение элемента Массив | n a b R | n a b R | Целый Целый Целый Одномерный массив | nÎN |
Промежуточные данные: Номер элемента Результаты: Номер наименьшего элемента Значение наименьшего элемента | i k M | i k M | Целый Целый Целый | i= |
Таблица переменных алгоритма упорядочения массива (Part_4)
Смысл переменных | Обозначение | Тип переменной | Примечания | |
в алгоритме | в программе | |||
Входные данные: Размер массива Массив | n R | n R | Целый Одномерный массив | 1<n<100 RiÎ[a;b] |
Промежуточные данные: Номер первого элемента в неупорядоченной части массива Номер следующего элемента в неупорядоченной части массива Номер нужного элемента Буфер обмена | i j k buf | i j k buf | Целый Целый Целый Целый | i= j= |
Выходные данные: Вектор | R | R | Одномерный массив |
|
|
Текст программы на Паскале
Program Work_4;
{Работа №4, вариант №666, гр.АЭ-04-01, Иванов И.И.}
Type vector=array[1..100] of integer;
var Vr, n, i, a, b: integer;
R: vector;
Dev : text;
name: string;
Sg: real;
Procedure Part_1(Vr,n,a,b:integer; var R:vector);
var i:integer;
Begin
If Vr<>1 then randomize;
for i:=1 to n do r[i]:=a+Round((b-a)*Random(100)/100);
end;
Procedure Part_2(n:integer; R:vector; var Sg:real);
var i,k:integer;
P:real;
Begin
P:=1;
k:=0;
For i:=n div 2 + 1 to n do
If (r[i]<>0) and (not odd(i)) then
begin
P:=P*r[i];
k:=k+1;
end;
If k>0 then
If P>0 then Sg:=exp(1/k*ln(P))
else
If odd(k) then Sg:=-exp(1/k*ln(abs(P)))
else Sg:=0
else Sg:=0;
end;
Procedure Part_3(n,a,b:integer; R:vector);
var i,k,M:integer;
Begin
M:=maxint; { Наибольшее значение переменной целого типа в Паскале = 32767 }
k:=0;
For i:=n div 3+1 to 2*n div 3 do
If ((r[i]<a/2.0) or (r[i]>b/2.0)) and (M>abs(r[i])) then
begin
M:=abs(r[i]);
k:=i;
end;
If k>0 then
begin
writeln(dev,'Наименьшее по модулю значение M = ',m:3);
write(dev,'имеют R[',k:2,'] = ',r[k]:2);
For i:=k+1 to 2*n div 3 do
|
|
If abs(r[i])=M then write(dev,' R[',i:2,'] = ',r[i]:2);
writeln(dev);
end
else writeln(dev,'Нет нужных элементов');
end;
Procedure Part_4(n:integer; var R:vector);
var i,j,k,buf:integer;
Begin
For i:=n div 2 + 1 to 3*n div 4 - 1 do
If r[i]>=0 then
begin
k:=i;
For j:=i+1 to 3*n div 4 do
If r[j]>=0 then
If 1/(r[j]+0.1e-30) > 1/(r[k]+0.1e-30) then k:=j;
buf:=r[i];
r[i]:=r[k];
r[k]:=buf;
end;
end;
Begin
writeln('для вывода на экран введите con');
writeln('для вывода на принтер введите prn');
write('для вывода в файл введите его адрес: ');
readln(name);
Assign(Dev,name);
Rewrite(Dev);
write('введите вариант расчета Vr => ');
readln(Vr);
if Vr=0 then
begin
n:=17; a:=-3; b:=4;
r[1] := 1; r[2] := 0; r[3] :=-3; r[4] := 2; r[5] := 0;
r[6] :=-3; r[7] := 4; r[8] := 3; r[9] := 2; r[10]:= 0;
r[11]:= 0; r[12]:= 4; r[13]:= 0; r[14]:=-2; r[15]:=-1;
r[16]:=-1; r[17]:= 1;
end
else
begin
Write('Введите n,a,b => '); readln(n,a,b);
Part_1(Vr,n,a,b,r);
end;
writeln(dev,'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
writeln(dev,'Исходный массив:');
For i:=1 to n do
begin
write(dev,r[i]:3);
if i = n div 2 then writeln(dev);
end;
writeln(dev);
writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
part_2(n,r,sg);
writeln(dev,'Среднегеометрическое Sg=',Sg:7:4);
writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
part_3(n,a,b,r);
writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
part_4(n,R);
writeln(dev,'Упорядоченный массив:');
for i:=1 to n do
begin
write(dev,r[i]:3);
if i = n div 2 then writeln(dev);
end;
writeln(dev);
writeln(dev,'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
close(dev);
end.
Результаты расчета
Результаты расчета тестового примера:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Исходный массив:
1 0 -3 2 0 -3 4 3
2 0 0 4 0 -2 -1 -1 1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Среднегеометрическое Sg= 2.0000
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Наименьшее по модулю значение M = 3
имеют R[ 6] = -3 R[ 8] = 3
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Упорядоченный массив:
1 0 -3 2 0 -3 4 3
0 0 2 4 0 -2 -1 -1 1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Результаты контрольного расчёта совпали с результатами ручного тестового расчёта, что подтверждает правильность программы.
Результаты расчёта для заданных значений исходных данных (без Randomize).
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Исходный массив:
-7 -7 4 -4 -3 2 -3 -5 -2 -2 -6 -1 -6 4 -6 -3
5 -2 3 -3 2 4 2 -3 -5 -3 -1 -4 4 -3 -1 -5 4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Среднегеометрическое Sg= 0.0000
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Наименьшее по модулю значение M = 4
имеют R[14] = 4 R[22] = 4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Упорядоченный массив:
-7 -7 4 -4 -3 2 -3 -5 -2 -2 -6 -1 -6 4 -6 -3
2 -2 2 -3 3 4 5 -3 -5 -3 -1 -4 4 -3 -1 -5 4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Результаты расчёта для заданных значений исходных данных (c Randomize).
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Исходный массив:
4 -6 -4 4 5 -5 -4 5 5 1 3 -1 5 -2 0 -5
-4 -6 5 2 -6 3 -2 -7 4 -5 6 -4 -5 4 -7 -5 -5
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Среднегеометрическое Sg= 0.0000
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Наименьшее по модулю значение M = 4
имеют R[17] = -4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Упорядоченный массив:
4 -6 -4 4 5 -5 -4 5 5 1 3 -1 5 -2 0 -5
-4 -6 2 3 -6 5 -2 -7 4 -5 6 -4 -5 4 -7 -5 -5
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Результаты расчёта для n=100, a=-5, b=3 c Randomize.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Исходный массив:
-5 1 -3 -2 2 0 -1 -4 -1 -4 -3 0 -2 0 1 0 3 -4 -4 1 2 -3 -4 -5 -5 3 0 1 2 -5 0 0 -3 0 0 -3 2 -3 1 0 -1 -1 -1 -3 -4 1 -2 -2 2
-1 3 -2 -1 -4 -2 0 -3 1 1 1 -3 -1 -3 -3 -1 -3 -2 1 2 2 -4 1 -2 -2 2 -4 1 -4 3 -2 3 0 -1 -1 -5 -3 3 1 1 -3 -4 1 2 2 -2 -5 -2 -2 -3
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Среднегеометрическое Sg=-1.8639
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Наименьшее по модулю значение M = 2
имеют R[37] = 2 R[47] = -2 R[48] = -2 R[49] = 2 R[52] = -2 R[55] = -2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Упорядоченный массив:
-5 1 -3 -2 2 0 -1 -4 -1 -4 -3 0 -2 0 1 0 3 -4 -4 1 2 -3 -4 -5 -5 3 0 1 2 -5 0 0 -3 0 0 -3 2 -3 1 0 -1 -1 -1 -3 -4 1 -2 -2 2
-1 0 -2 -1 -4 -2 1 -3 1 1 1 -3 -1 -3 -3 -1 -3 -2 1 2 2 -4 3 -2 -2 2 -4 1 -4 3 -2 3 0 -1 -1 -5 -3 3 1 1 -3 -4 1 2 2 -2 -5 -2 -2 -3
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Дата добавления: 2018-09-23; просмотров: 184; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!