{ 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
Код Pascal1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 const n=100; type arr=array[1..n] of integer; var a:arr; skv:real; i,k,l:integer; procedure print(s:string;a:arr;l:integer); var i:integer; begin writeln(s); write('['); for i:=1 to l-1 do write(a[i],', '); writeln(a[l],']'); end; procedure sort(var a:arr;l:integer); var i,j,t:integer; begin for i:=1 to l-1 do for j:=i to l do if a[j]<a[i] then begin t:=a[j]; a[j]:=a[i]; a[i]:=t; end; end; begin repeat write('Количество элементов массива:'); readln(k); until (k>0) and (k<101); write('Введите массив:'); for i:=1 to k do repeat write('a[',i,']='); readln(a[i]); until (a[i]>-11) and (a[i]<11); print('Оригинальный массив:',a,k); l:=0;skv:=0.0; for i:=1 to k do if a[i]<0 then begin a[i]:=sqr(a[i]); skv:=skv+a[i]; l:=l+1; end else a[i]:=i; print('Полученный массив:',a,k); sort(a,k); print('отсортированный массив:',a,k); writeln('Среднее арифметическое квадратов отрицательных чисел:',skv/l:0:4); readln; end.