Автор работы: Пользователь скрыл имя, 26 Ноября 2013 в 20:20, контрольная работа
Часть 1. Вычислить значения 39 элементов одномерного целочисленного массива Y в интервале (-10; 10) с использованием генератора случайных чисел.
Для получения целого случайного числа x на отрезке [a, b] в языке Паскале используется следующий оператор:
x := a + ROUND((b-a)*RANDOM (100)/100).
{РГР №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(
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.
Результаты расчета тестового примера:
++++++++++++++++++++++++++++++
Исходный массив:
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
++++++++++++++++++++++++++++++
Результаты контрольного расчёта совпали с результатами ручного тестового расчёта, что подтверждает правильность программы.
Результаты расчёта для
++++++++++++++++++++++++++++++
Исходный массив:
-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
++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++
Исходный массив:
-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 Алгоритм вычисления среднегеометрического каждых вторых элементов второй четверти массива