
- •Отчет По лабораторной работе №4
- •Часть 1. Вычислить значения 39 элементов одномерного целочисленного массива f в интервале (-7,8) с использованием генератора случайных чисел.
- •Часть 2. Вычислить среднегеометрическое значение положительных элементов третьей четверти массива.
- •Часть 3. Определить значение, самое близкое к заданному числу с среди элементов нечетных по номеру второй половины массива.
- •Часть 4. Упорядочить положительные элементы последней четверти массива по убыванию квадратов.
- •3.1 Основной алгоритм
- •3.2 Алгоритм получения элементов вектора
- •3.3 Алгоритм вычисления среднегеометрического значения
- •3.4 Алгоритм определения значения, самого близкого к заданному числу с
- •3.5 Упорядочение массива
- •4. Таблицы переменных задачи
- •5. Текст программы на Паскале
5. Текст программы на Паскале
Program Work_4;
var vr,i,j,n,z,v,tmp,k,a,b,p,w:integer;
Sr:real;
Dev : text;
name: string;
Type vector=array[1..100] of integer;
Type vector2=array [1..100] of integer;
var F:vector; l:vector2;
Procedure Part_1 (a,b,n:integer; var F:vector);
var i:integer;
Begin
writeln('------- PART 1 --------');
{Вычислить значения 39 элементов одномерного целочисленного массива F в интервале (-7,8) с использованием генератора случайных чисел }
writeln;
If Vr<>1 then randomize;
for i:=1 to n do
begin
F[i]:= a+ROUND((b-a)*RANDOM(100)/100);
write(F[i]:4,' ');
end
end;
Procedure Part_2(n:integer; Sr:real; F:vector);
var i,k,P:integer;
Begin
writeln('------- PART 2 --------');
{ Вычислить среднегеометрическое значение положительных элементов третьей четверти массива }
writeln;
P:=1;
k:=0;
For i:=1+ 2*n div 4 to 3*n div 4 do
If (F[i]>0) then begin
k:=k+1;
P:=P*F[i];
end;
if P<0 then
P:=-1*P;
Sr:=exp((1/k)*ln(P));
writeln(' среднегеометрическое значение положительных элементов третьей четверти массива равно ', Sr:4:3);
Writeln(dev, ‘среднегеометрическое значение положительных элементов третьей четверти массива равно ',Sr:4:3);
end;
Procedure Part_3(n,a,b:integer; F:vector);
var i,x,c:integer;
begin
writeln('------- PART3 --------');
{Определить значение, самое близкое к заданному числу С среди элементов нечетных по номеру второй половины массива}
Writeln('C= ') ;
Read(C);
For i:=1+n div 2 to n do
If (i mod 2 = 1) and (abs(f[i]-c)<abs(f[i+1]-c)) then begin
x:=F[i];
end;
writeln('элемент,самый близкий к заданному числу С среди элементов нечетных по номеру второй половины массива:',x);
writeln(dev,'элемент,самый близкий к заданному числу С среди элементов нечетных по номеру второй половины массива:',x);
end;
Procedure Part_4(n:integer; var F:vector; l:vector2);
var i,y,x,p,v,tmp:integer;
begin
writeln;
writeln('------- PART4 --------');
{ Упорядочить положительные элементы последней четверти массива по убыванию квадратов }
write(dev,'Упорядоченный массив: положительные элементы последней четверти массива по убыванию квадратов ');
writeln;
x:=trunc(1+ 3*n div 4);
y:=n;
p:=0;
w:=1;
for i:=x to y do
begin
if F[i]>0 then
begin
v:=F[i];
l[w]:=v;
p:=p+1;
w:=w+1;
end
end;
writeln;
for i:= 1 to p-1 do
for j:= i+1 to p do
if (sqr(l[i])) < (sqr(l[j])) then begin
tmp:= l[i];
l[i]:= l[j];
l[j]:= tmp;
end;
for i:= 1 to p do
begin
write(l[i],' ');
write(dev,l[i],' ');
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:=16; a:=-3; b:=4;
f[1] := 1; f[2] := 0; f[3] :=-3; f[4] := 2; f[5] := 0;
f[6] :=-3; f[7] := 4; f[8] := 3; f[9] := 2; f[10]:= 0;
f[11]:= 0; f[12]:= 4; f[13]:= 0; f[14]:=-2; f[15]:=-1;
f[16]:=-1;
end
else
begin
Write('Введите n,a,b => '); readln(n,a,b);
Part_1(a,b,n,f);
writeln;
end;
writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
writeln(dev,'Исходный массив:');
For i:=1 to n do
begin
write(dev,f[i]:3);
if i = n div 2 then writeln(dev);
end;
writeln(dev);
writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
Part_2(n,Sr,f);
writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
Part_3(n,a,b,f);
writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
Part_4(n,f,l);
writeln(dev);
writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
close(dev);
end.
6. Результаты расчета
Результаты расчета тестового примера:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Исходный массив:
1, 0, -3, 2, 0, -3, 4, 3,
2, 0, 0, 4, 0, -2, -1, -1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
среднегеометрическое значение положительных элементов третьей четверти массива равно 2.828
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
самое близкое к заданному числу С среди элементов нечетных по номеру второй половины массива: 2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Упорядоченный массив: положительные элементы последней четверти массива по убыванию квадратов
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Результаты контрольного расчёта совпали с результатами ручного тестового расчёта, что подтверждает правильность программы.
Результаты расчёта для заданных значений исходных данных (c Randomize).
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Исходный массив:
-5 -3 1 -2 1 -3 -5 0 -5 6 4 6 -7 4 2 -2 0 -2 2 2 8 5 3 1 1 8 -2 7 -5 2 2 3 -4 -1 -2 0 4 -4 -6 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
среднегеометрическое значение положительных элементов третьей четверти массива равно 3.281
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
самое близкое к заданному числу С среди элементов нечетных по номеру второй половины массива: 4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Упорядоченный массив: положительные элементы последней четверти массива по убыванию квадратов 4 3 2 2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++