Дан массив из N элементов. Определить сумму тех, которые нечетны и отрицательны.

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

Дан массив из N элементов. Определить сумму тех, которые нечетны и отрицательны.


Информатика (2.3k баллов) | 96 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

//Pascal
//Заполнение массива случайными числами
var
  A: array[1..255] of integer;
  i, sum, N: integer;
begin
write('Введите N: '); readln(N);
randomize; //В PascalABC.NET можно убрать
for i := 1 to N do
begin
  A[i] := random(21)-10; //Случайные числа от -10 до 10
  if ((A[i] mod 2 <> 0) and (A[i] < 0)) then sum := sum + A[i];
  write(A[i], ' ');
end;
writeln;
writeln('Сумма отрицательных и нечетных = ', sum);
readln;
end. 


//Pascal
//Заполнение массива с клавиатуры
var
  A: array[1..255] of integer;
  i, sum, N: integer;
begin
write('Введите N: '); readln(N);
for i := 1 to N do
begin
  write('A[', i, '] = '); readln(A[i]);
  if ((A[i] mod 2 <> 0) and (A[i] < 0)) then sum := sum + A[i];
end;
writeln;
writeln('Сумма отрицательных и нечетных = ', sum);
readln;
end. 


image
image
(9.4k баллов)
0

Почему до 255?

0

И какой вариант вернее?

0

Оба варианты верны. В задании не сказано, как заполнять массив. Просто сделал второй вариант на всякий случай.
По поводу размера массива. В старых версиях паскаля было ограничение на 256 элементов. Ты ведь не указываешь, на каком паскале ты делаешь, я и делаю более менее универсальный вариант.

0

Если делаешь во FreePascal или PascalABC.NET, можешь сделать так:
В var не задавать размер массива:
"A: array of integer;"

После ввода размера массива(N) добавить:
"SetLength(A, N);"

И сделать цикл таким:
"for i:=0 to N-1 do"