Дан одномерный массив A[n]. Найти сумму отрицательных элементов. Получить новый массив...

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

Дан одномерный массив A[n]. Найти сумму отрицательных элементов. Получить новый массив B[n] путем замены нулевых элементов на полученную сумму.
pascal


Информатика (77 баллов) | 50 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1509 от 27.07.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(ReadInteger('n='),-10,10); a.Println;
  var s:=a.Where(x->x<0).Sum; // сумма отрицательных элементов<br>  var b:=a.Select(x->x=0?s:x).ToArray; b.Println
end.

Пример
n= 20
1 6 2 4 2 3 5 -8 2 -6 0 1 -7 0 -7 8 -4 -8 -1 -8
1 6 2 4 2 3 5 -8 2 -6 -49 1 -7 -49 -7 8 -4 -8 -1 -8

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

Const
 n=10;
var
 A: array[1..n] of integer;
 B:array[1..n] of integer;
  i: integer;
  sum: integer;
begin
{Заполнение массивов случайными числами}
randomize;
for i:=1 to n do begin
  A[i]:=random(100)-50;
  B[i]:=random(100)-50; {или B[i]=A[i];, если значения массива B должны совпадать со значениями массива A }
end;
{Поиск суммы отрицательных элементов}
sum:=0;
for i:=1 to n do 
  if A[i]<0 then sum:=sum+A[i];<br>{Замена нулевых элементов массива B на полученную сумму}
for i:=1 to n do
  if B[i]=0 then B[i]:=sum;
{Вывод значений массива A}
writeln('массив A');
for i:=1 to n do
  write(A[i],',');
writeln('');
writeln('Массив B');
{Вывод значений массива B}
for i:=1 to n do
  write(B[i],',');

{Ожидание нажатия клавиши return от пользователя.}
readln;
end.

(17.3k баллов)