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)
 создает массив остататков от деления полученных модулей на 

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

 мы получим
![$[\text{1 2 0 1 2 0...}]$ $[\text{1 2 0 1 2 0...}]$](https://dxdy-02.korotkov.co.uk/f/d/d/f/ddfab77c33711980a367c35752eb7cee82.png) 
наконец 

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

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

 получим: 
![$[\text{1 0 1 1 0 1...}]$ $[\text{1 0 1 1 0 1...}]$](https://dxdy-02.korotkov.co.uk/f/9/c/a/9ca75aa9c19c2a8cbce6706ae61d86df82.png) 
и последнее 

 - поэлементное умножение исходного массива 
![$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)
 и массива с нулями и единицами: умножение на единицу, не изменяет элемент, а умножение на ноль дает ноль - как раз то, что нам нужно: 
![$[\text{1 0 3 -4 0 -6...}]$ $[\text{1 0 3 -4 0 -6...}]$](https://dxdy-01.korotkov.co.uk/f/8/c/9/8c9b166fcf84d92394b52f7b13da822482.png) 
Собственно, алгоритм написан (правда, для С он будет не оптимален, но...)