Консультация № 201437
27.09.2021, 15:23
0.00 руб.
0 2 2
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Составить программу вычисления минимального произведения
одноименных компонент векторов x и y размерностью n.
Pascal.

Обсуждение

давно
Профессор
401888
1232
27.09.2021, 16:04
общий
27.09.2021, 16:07
это ответ
Если правильно понял, то так.
Код:
var x,y:array[1..50] of real;
n,i:integer;
mp:real;
begin
randomize;
repeat
write('Введите размер векторов от 2 до 50 n=');
readln(n)
until n in [2..50];
for i:=1 to n do
begin
x[i]:=9*random;
y[i]:=9*random;
end;
writeln('Вектор Х');
for i:=1 to n do
write(x[i]:5:2);
writeln;
writeln('Вектор Y');
for i:=1 to n do
write(y[i]:5:2);
writeln;
mp:=x[1]*y[1];
for i:=2 to n do
if x[i]*y[i]<mp then mp:=x[i]*y[i];
write('Минимальное произведение компонент с одинаковыми номерами=',mp:0:2)
end.
5
давно
Модератор
137394
1850
28.09.2021, 14:52
общий
28.09.2021, 14:56
это ответ
Еще вариант, основное отличие от ответа puporev - использование процедуры.
Код:
Const
Nmax = 10;
Vmin = -20.0;
Vmax = 20.0;

Type ReMass = Array[1..Nmax] Of Real;

Procedure RanMass(Var A : ReMass; i1, i2 : Integer; Vmin, Vmax : Real);
Var i : Integer;
Begin
For i := i1 To i2 Do Begin
A[i] := Random * (Vmax - Vmin) + Vmin;
Write(A[i]:7:2);
End;
WriteLn;
End;

Var
i, n, iMin : Integer;
x, y : ReMass;
xy, xyMin : Real;

Begin
WriteLn;
Write('Input dimension of vector array 1<=n<=', Nmax,': ');
Read (n);
WriteLN;
If (n < 1) Or (n > Nmax) Then WriteLn('Wrong value n = ', n)
Else Begin
Write(' ');
For i := 1 To n Do Write(i:7);
WriteLN;

Randomize;
Write('x[i]');
RanMass(x, 1, n, Vmin, Vmax);

Write('y[i]');
RanMass(y, 1, n, Vmin, Vmax);

iMin := 1;
xyMin := x[iMin] * y[iMin];
Write('x*y ');

For i := 1 To n Do Begin
xy := x[i] * y[i];
If xy < xyMin Then Begin
xyMin := xy;
iMin := i;
End;
Write(xy:7:2)
End;

WriteLN; WriteLN;
Write('Min value x[i]*y[i] = ', xyMin:7:2, ' where i = ', iMin)
End;
End.
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа