Алгоритм получения элементов вектора



 

 

             
Vr – вариант расчёта n – количество элементов a – нижняя граница b – верхняя граница
 
   

 

 


 


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

 

 


 


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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!