Заменить элементы массива на противоположные

Задача

Дан массив, содержащий положительные и отрицательные числа. Заменить все элементы массива на противоположные по знаку.

Например, задан массив [1, -5, 0, 3, -4]. После преобразования должно получиться [-1, 5, 0, -3, 4].

 

Решение

Чтобы поменять элемент на противоположный, достаточно умножить его на -1.

const N = 10;
var
    arr: array[1..N] of integer;
    i: byte;
begin
    randomize;
    for i:=1 to N do begin
        arr[i] := random(100) - 50;
        write(arr[i]:4);
    end;
    writeln;
    for i:=1 to N do 
        arr[i] := -1 * arr[i];
    for i:=1 to N do 
        write(arr[i]:4);
    writeln;
end.

Задача может быть сформулирована так: заменить первые K элементов на противоположные по знаку. В данном случае перебирать элементы и менять на противоположные нужно до K включительно.

const N = 15;
var
    arr: array[1..N] of integer;
    i, k: byte;
begin
    randomize;
    for i:=1 to N do begin
        arr[i] := random(100) - 50;
        write(arr[i]:4);
    end;
    writeln;
    write('Введите k <= ', N, ': ');
    readln(k);
    if k > N then exit;
    for i:=1 to k do arr[i] := -1 * arr[i];
    for i:=1 to N do 
        write(arr[i]:4);
    writeln;
end.

Тема

Одномерные массивы

Уровень

Простые задачи

Последняя редакция

Комментарии

Дан массив из 10 элементов. Замените все четные элементы нулями.

Program NoName;
const n = 10;
var a : array [1..n] of integer;
i : integer;
Begin 
for i:=1 to n do
begin
readln ( a[i] );
end;
for i:=1 to n do
begin
if (a[i]mod 2)=0 then
a[i]:=0;
write ( a[i],' ' );
end;
end.