Техника

помогите решить задачи в паскале

1)Известно, что в массиве а1, а2, ..а16 количество отрицательных чисел равно количеству положительных. Составить новый массив так, чтобы чередовались положительные и отрицательные числа. 2)Найти сумму элементов последовательности b1, b2, ..b15 , расположенных правее последнего отрицательного элемента и номер этого элемента. HELP!!!!Очень нужно!!!!Не дайте погибнуть!!!!
Создать переменные: индекс текущего отрицательного числа INN (начальное значение = 1) и индекс текущего положительного числа IPN (начальное значение = 2).
Наш выходной массив Out заполнить нулями.
Перебирать исходный массив по порядку.
При нахождении отрицательного числа записывать в Out[INN] это число и приращивать INN на 2.
Если же число оказалось положительными, записывать в Out[IPN] это число и приращивать IPN на 2.
---
Быстродействие алгоритма: O(n). Быстрее вряд ли найдёте :)
---
С паскалем плохо знаком, вот примерный текст на C++ (на C++ нумерация начинается с нуля) :
int INN = 0, IPN = 1;
int Out [16];
memset (Out, 0, sizeof(int)*16);
for (int i = 0; i<16; i++)
if (array [ i ] < 0)
Out [INN++] = array [ i ]
else
Out [IPN++] = array [ i ];
KA
Kiwi Aliyev
54 366
Лучший ответ
1) Самое простое, когда известна заранее размерность массива, - это просто перебирать исходный массив a[ i ], и смотреть на знак элемента (цикл for). Если он положительный, то засовывать его в элемент b[j], увеличив потом j на 2, а если отрицательный - то в b[k], опять же увеличив k на 2. При этом начальные значения i и k должны быть соответственно 0 и 1.
2) Начните перебор элементов b[ i ] С КОНЦА - до первого встретившегося отрицательного.