DMVN писал(а):
Хм, из поста про MatLab я ничего не понял, думаю, и автор темы --- тоже.
Поясню:
У нас есть одномерный (хотя в моем примере это несущественно) массив a - неважно каким образом он задан.
Например зададим
Код:
a=[1 -2 3 -4 5 -6...]
Тогда
Код:
abs(a)
создает массив модулей элементов исходного массива.
Получим
![$[\text{1 2 3 4 5 6...}]$ $[\text{1 2 3 4 5 6...}]$](https://dxdy-01.korotkov.co.uk/f/0/d/f/0dfdf7f30b53bdbd3858cdcd99e9880582.png)
Код:
mod(...,p)
создает массив остататков от деления полученных модулей на

. Например, для

мы получим
наконец

- не равно, возвращает массив, в котором для всех элементов предыдущего нашего массива будут единицы, если эти элементы не равны

и нули - если равны.
Например, при

получим:
и последнее

- поэлементное умножение исходного массива
![$a=[\text{1 -2 3 -4 5 -6...}]$ $a=[\text{1 -2 3 -4 5 -6...}]$](https://dxdy-01.korotkov.co.uk/f/4/c/e/4cebf464537702234d9fb1ccb6aa8a2b82.png)
и массива с нулями и единицами: умножение на единицу, не изменяет элемент, а умножение на ноль дает ноль - как раз то, что нам нужно:
Собственно, алгоритм написан (правда, для С он будет не оптимален, но...)