Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по лаб раб №4.rtf
Скачиваний:
4
Добавлен:
20.07.2019
Размер:
1.13 Mб
Скачать

5. Текст программы на Паскале

Program Work_4;

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

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

R: vector;

Dev : text;

name: string;

P: 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 P:real);

var i,k:integer;

Begin

P:=1;

k:=0;

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

If (r[i]<>0) and (not odd(i)) then

begin

P:=P*r[i];

k:=k+1;

end;

if k=0 then P:=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 2+1 to n do

If ((r[i]>a/2.0) and (r[i]<b/2.0)) and (M>r[i]) then

begin

M:=r[i];

k:=i;

end;

If k>0 then

begin

writeln(dev,'Минимальное значение M = ',m:3);

write(dev,'имеют');

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

If 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 4 + 1 to n div 2 - 1 do

If (r[i] mod 2 > 0) then

begin

k:=i;

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

If (r[j] mod 2 > 0) then

If r[j]*r[j] > r[k]*r[k] 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] := 1;

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

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);

end;

writeln(dev);

writeln(dev,'++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

part_2(n,r,P);

writeln(dev,'Произведение P=',P: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);

end;

writeln(dev);

writeln(dev,'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++');

close(dev);

end.

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

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

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

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

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

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

Произведение P=12.0000

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

Минимальное значение M = -1

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

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

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

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

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

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

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

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

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

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

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

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

Произведение P=-180.0000

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

Минимальное значение M = -3

имеют R[18] = -3 R[31] = -3

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

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

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

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

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

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

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

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

1 -4 -7 -7 7 6 3 3 -7 7 -5 7 -6 5 -4

6 0 2 1 2 5 -2 2 -6 2 0 4 -1 2 5 -3

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

Произведение P=-48.0000

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

Минимальное значение M = -3

имеют R[31] = -3

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

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

1 -4 -7 -7 7 6 3 7 -7 7 -5 5 -6 3 -4

6 0 2 1 2 5 -2 2 -6 2 0 4 -1 2 5 -3

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

Результаты расчёта для n=100, a=-14, b=16 c Randomize.

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

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

1 9 -3 13 11 -8 5 4-10 -6 -3 6 1 -5 14 16 -4 11 15 6 -4 2-11 -2-14-10 6 8 3-12 6 4 5 10 0-12 15 11 10-12 -6 -2 -3 15 11 12 4 3 9-11 12 3 7-14 -1 15 6 15 13 6 2 13-13-12 3 9-14 7 12 12-13 0-14 12 -2 14-10-10 3-10 2-11 15 0 -8-11 12 5 -3 0 -2 16 14-10 2 -3 -4 -5 -3-12

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

Произведение P=80243654400.0000

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

Минимальное значение M = -5

имеют R[98] = -5

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

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

1 9 -3 13 11 -8 5 4-10 -6 -3 6 1 -5 14 16 -4 11 15 6 -4 2-11 -2-14-10 6 8 15-12 6 4 15 10 0-12 11 11 10-12 -6 -2 -3 9 5 12 4 3 3-11 12 3 7-14 -1 15 6 15 13 6 2 13-13-12 3 9-14 7 12 12-13 0-14 12 -2 14-10-10 3-10 2-11 15 0 -8-11 12 5 -3 0 -2 16 14-10 2 -3 -4 -5 -3-12

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