Дан массив из N элементов. Определить сумму тех, которые нечетны и отрицательны.
Answers & Comments
pacixor
//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.
pacixor
Оба варианты верны. В задании не сказано, как заполнять массив. Просто сделал второй вариант на всякий случай. По поводу размера массива. В старых версиях паскаля было ограничение на 256 элементов. Ты ведь не указываешь, на каком паскале ты делаешь, я и делаю более менее универсальный вариант.
pacixor
Если делаешь во FreePascal или PascalABC.NET, можешь сделать так: В var не задавать размер массива: "A: array of integer;"
После ввода размера массива(N) добавить: "SetLength(A, N);"
Answers & Comments
//Заполнение массива случайными числами
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.
По поводу размера массива. В старых версиях паскаля было ограничение на 256 элементов. Ты ведь не указываешь, на каком паскале ты делаешь, я и делаю более менее универсальный вариант.
В var не задавать размер массива:
"A: array of integer;"
После ввода размера массива(N) добавить:
"SetLength(A, N);"
И сделать цикл таким:
"for i:=0 to N-1 do"