Обработка одномерного массива

Автор работы: Пользователь скрыл имя, 26 Ноября 2013 в 20:20, контрольная работа

Краткое описание

Часть 1. Вычислить значения 39 элементов одномерного целочисленного массива Y в интервале (-10; 10) с использованием генератора случайных чисел.
Для получения целого случайного числа x на отрезке [a, b] в языке Паскале используется следующий оператор:
x := a + ROUND((b-a)*RANDOM (100)/100).

Прикрепленные файлы: 1 файл

романюк 999 .doc

— 156.50 Кб (Скачать документ)

  {РГР №2, вариант №999, гр.БМТ1-11-03, Романюк Е.В.}

  Type vector=array[1..100] of integer;

  var Vr, n, i, a, b,z: integer;

                   Y: vector;

                   Sg: real;

 

Procedure Part_1(Vr,n,a,b:integer; var Y:vector);

  var i:integer;

Begin

  If Vr<>1 then randomize;

  for i:=1 to n do Y[i]:=a+Round((b-a)*Random(100)/100);

end;

 

Procedure Part_2(n:integer; Y:vector; var Sg:real);

  var i,k:integer;

        P:real;

      

Begin

  P:=1;

  k:=0;

  z:= (n div 4+1) mod 2;  

  For i:=n div 4 +1 to n div 2 do

    If ((i+z) mod 2<>0) and (Y[i]<>0)  then

      begin

      P:=P*Y[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; Y:vector);

  var i,k,c,M:integer;

Begin

  M:=32757;

  k:=0;

  c:=round(abs(a+b)/2);

  For i:=1 to n do

    If (Y[i] mod 2 <> 0) and( abs(c -abs(Y[i]))< M ) then begin M:=abs(c - abs(Y[i])); k:=i; end;

  If k>0 then

    begin

    writeln('Ближайшее к с=',c,' значение' );

    write('имеют Y[',k:2,'] = ',Y[k]:2);

    For i:=k+1 to n do

      If (Y[i] mod 2 <> 0) and (abs(c -abs(Y[i]))=M) then write('    Y[',i:2,'] = ',Y[i]:2);

   writeln;

   end

     else writeln('Нет нужного элемента');

 end;

 

Procedure Part_4(n:integer; var Y:vector);

  var i,j,k,buf:integer;

Begin

  For i:=n div 3 + 1 to 2*n div 3 - 1 do

   If Y[i] > 0 then

    begin

     k:=i;

     For j:=i+1 to 2*n div 3  do

       If Y[j] > 0 then

         If 1/(abs(Y[j])+0.1e-30) > 1/(abs(Y[k])+0.1e-30) then k:=j;

    buf:=Y[i];

    Y[i]:=Y[k];

    Y[k]:=buf;

    end;

end;

 

Begin

  write('введите вариант расчета Vr => ');

  readln(Vr);

  if Vr=0 then

    begin

    n:=17; a:=-3; b:=4;

    Y[1] := 1; Y[2] := 0; Y[3] :=-3; Y[4] := 2; Y[5] := 0;

    Y[6] :=-3; Y[7] := 4; Y[8] := 3; Y[9] := 2; Y[10]:= 0;

    Y[11]:= 0; Y[12]:= 4; Y[13]:= 0; Y[14]:=-2; Y[15]:=-1;

    Y[16]:=-1; Y[17]:= 1;

    end

      else

        begin

        Write('Введите n,a,b => '); readln(n,a,b);

        Part_1(Vr,n,a,b,Y);

        end;

  writeln('+++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

  writeln('Исходный массив:');

  For i:=1 to n do

    begin

    write(Y[i]:3);

    if i = n div 2 then writeln;

    end;

  writeln;

  writeln('++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

  part_2(n,Y,Sg);

  writeln('Среднегеометрическое Sg=',Sg:7:4);

  writeln('++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

  part_3(n,a,b,Y);

  writeln('++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

  part_4(n,Y);

 

  writeln('Упорядоченный массив:');

  for i:=1 to n do

    begin

    write(Y[i]:3);

    if i = n div 2 then writeln;

    end;

  writeln;

  writeln('+++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

 end.

 

5. Результаты расчета

Результаты расчета тестового  примера:

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Исходный массив:

  1  0 -3  2  0 -3  4  3

  2  0  0  4  0 -2 -1 -1  1

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Среднегеометрическое Sg= 0.0000

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Ближайшее к с=0 значение

имеют Y[ 1] =  1    Y[15] = -1    Y[16] = -1    Y[17] =  1

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Упорядоченный массив:

  1  0 -3  2 0 -3  2  3

  4  0  0  4  0 -2 -1 -1  1

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

 

Результаты контрольного расчёта  совпали с результатами ручного  тестового расчёта, что подтверждает правильность программы.

 

Результаты расчёта для заданных значений исходных данных (без Randomize).

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Исходный массив:

-9 -2  8 -4 -3  6  5 -5 -7 -4 -5  5  4 -3 -1  6  0 -8  6

-1  2  7  2  9  7 -9  1  6 -2  9 -7 -3 -8  7 -7 -8  7  2 -7

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Среднегеометрическое Sg= 3.3098

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Ближайшее к с=0 значение

имеют Y[15] = -1    Y[20] = -1    Y[27] =  1

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Упорядоченный массив:

-9 -2  8 -4 -3  6  5 -5 -7 -4 -5  5  4 -3 -1  2  0 -8  2

-1  6  6  7  7  9 -9  1  6 -2  9 -7 -3 -8  7 -7 -8  7  2 -7

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                                                                                                                                                                       Результаты расчёта для заданных значений исходных данных (c Randomize).

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Исходный массив:

-6-10  4  1 -5 -7-10 -6  1  2  7 -3  9 -9  8 -6  7 -4 -5

-7 -2  0 -6  3 -1 -3  1 -5 -6  9  7-10  8  2 -5  6 -7  4  4

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Среднегеометрическое Sg=-7.0681

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Ближайшее к с=0 значение

имеют Y[ 4] =  1    Y[ 9] =  1    Y[25] = -1    Y[27] =  1

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Упорядоченный массив:

-6-10  4  1 -5 -7-10 -6  1  2  7 -3  9 -9  3 -6  7 -4 -5

-7 -2  0 -6  8 -1 -3  1 -5 -6  9  7-10  8  2 -5  6 -7  4  4

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

 

 

 

 

 

 

 

 

3.1 Основной алгоритм

 



 





 





 

 



 

 






 


 



 

 

 

 





 


 


 

 

 





 





 

 





 

 

 

 

 

3.3 Алгоритм вычисления среднегеометрического  каждых вторых элементов второй четверти массива

 


 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 



Информация о работе Обработка одномерного массива