Напишите программу, размещающую в памяти два вектора и вычисляющую их скалярное...

0 голосов
32 просмотров

Напишите программу, размещающую в памяти два вектора и вычисляющую их скалярное произведение.


Информатика (107 баллов) | 32 просмотров
0

Вы не указываете ни языка программирования (и уж тем более, изучаемой Вами его версии), ни уровня допустимых (т.е. то, что Вы изучал) конструкций языка....

0

В таких условиях отвечающий на вопрос может выбирать ЛЮБОЙ язык и ЛЮБОЙ уровень программирования. А оно Вам надо?

0

Ой,Free Paskal

0

Free Pascal

0

Ссылочные типы

0

Понятно....этот архаизм, который сто лет неинтересен. Со ссылочными типами надо работать в серьезных языках типа C/C++ да и то, когда базовые классы разрабатываются. А в Паскале оно совсем ни к чему... сдадите эту тему и забудете её навсегда.

Дан 1 ответ
0 голосов
Правильный ответ

{ Free Pascal - fpc 2.6.4 }
var
  i,n:integer;
  A,B:array of integer;
  p:longint;
begin
  Write('Число элементов в векторах='); Read(n);
  Randomize;
  SetLength(A,n);
  Writeln('Вектор A');
  for i:=0 to n-1 do begin A[i]:=Random(51)-25; Write(A[i],' ') end;
  Writeln;
  SetLength(B,n);
  p:=0;
  Writeln('Вектор B');
  for i:=0 to n-1 do begin
    B[i]:=Random(51)-25;
    Write(B[i],' ');
    p:=p+A[i]*B[i]
    end;
  Writeln;
  Writeln('Скалярное произведение равно ',p);
end.

Тестовое решение:
Число элементов в векторах=15
Вектор A
-16 -6 -1 6 -6 7 22 4 16 19 3 -21 19 22 7
Вектор B
21 21 -2 -8 -3 25 -4 20 6 -11 8 10 -16 -16 19
Скалярное произведение равно -1145

(142k баллов)