Необходимо получить третий массив, из имеющихся двух массивов А(14) и B(14). Посредством...

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

Необходимо получить третий массив, из имеющихся двух массивов А(14) и B(14). Посредством перемножения элементов первого массива на элементы второго, взятых в обратном порядке. Помогите написать программу в FreePascal. Все массивы вывести на экран.


Информатика (31 баллов) | 35 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
Вот код, написанный в среде PascalABC.NET 3.2 и проверенный в среде Free Pascal (fpc):

const
  n=14;
var
  a,b,c:array[1..n] of integer;
  i:integer;
begin
  Randomize;
  for i:=1 to n do begin
    a[i]:=random(199)-99; // [-99;99]
    Write(a[i],' ');
    b[i]:=random(199)-99; // [-99;99]
    end;
  Writeln;
  for i:=1 to n do Write(b[i],' ');
  Writeln;
  for i:=1 to n do begin c[i]:=a[i]*b[n+1-i]; Write(c[i],' ') end;
  Writeln
end.

Пример
70 92 -92 19 -33 8 10 -37 -87 51 -29 -4 -3 25
20 -69 7 -36 -91 -74 -38 -16 49 -46 93 0 -73 40
2800 -6716 0 1767 1518 392 -160 1406 6438 -4641 1044 -28 207 500

В качестве бонуса и вопроса "в воздух" - та же самая программа, написанная с учетом современных возможностей PascalABC.NET 3.2

begin
  var a:=ArrRandom(14,-99,99); a.Println;
  var b:=ArrRandom(14,-99,99); b.Println;
  var c:=a.Zip(b.Reverse,(x,y)->x*y).ToArray; c.Println
end.

И обещанный вопрос: Если Паскаль, как система программирования, в настоящее время используется только в целях обучения (следовательно, критерий "fpc шире распространен" отпадает), то зачем учиться на давным-давно устаревшей версии? Чтобы писать было сложнее, больше и допускать при этом больше ошибок?

(150k баллов)
0 голосов

Const n=10;
var a,b,c:array[1..n] of integer;
i:integer;
begin
Randomize;
writeln('A:');
for i:=1 to n do begin
 a[i]:=random(21);
 write(a[i]:4);
 end;
writeln;
writeln('B:');
for i:=1 to n do begin
 b[i]:=random(21);
 write(b[i]:4);
 end;
writeln;
for i:=1 to n do
 c[i]:=a[i]*b[n-i+1];
writeln('C:');
for i:=1 to n do write(c[i]:4);
writeln;
end.

Пример:
A:
  20  10  18  11   5   9   0   9  10   8
B:
  12   7  20  15   8  19   6  16   1   2
C:
  40  10 288  66  95  72   0 180  70  96

(194k баллов)
0

Да, прокол получился. ((( Надеюсь, автор вопроса сможет исправить 10 на 14. )