1. Условие
Даны целые числа a1, ..., an, каждое из которых отлично от 0. Если в последовательности отрицательные и положительные члены чередуются (+,-,+,-,.. или -,+,-,+,...), то ответом должна служить исходная последовательность. Иначе получить все отрицательные члены, сохранив порядок их следования.
2. Решение
Оператор задает количество элементов массива. Программа динамически выделяет оперативную память под массив чисел. Производится инициализация массива. В цикле выясняется, чередуются ли отрицательные и положительные члены последовательности. На экран выводится результат.
3. Алгоритм решения

4. Текст программы
0 : #include <stdio.h>
1 : #include <alloc.h>
2 : #include <conio.h>
3 : void main(void)
4 : {
5 : int i,n,povt;
6 : float *a;
7 : clrscr();
8 : printf( "\n \t \t Введите количество элементов n = " );
9 : scanf("%d", &n);
10: a=(float *) malloc(n*sizeof(float));
11: printf( "\n \t \t \t Введите элементы: \n " );
12: for(i=0; i<n; i++)
13: {
14: printf( "\t \t \t \t a[%d] = ", i );
15: scanf( "%f", &a[i] );
16: }
17: рrintf( "\n \n \t \t \t Полученная последовательность:" );
18: povt=0;
19: for(i=0; i<n; i++)
20: if(a[i]*a[i+1]>0)
21: povt = 1;
22: if(povt = = 0)
23: for(i=0; i<n; i++)
24: printf( "\n \t \t \t \t a[%u]=%f", i, a[i] );
25: else
26: for(i=0;i<n;i++)
27: if(a[i]<0)
28: printf( "\n \t \t \t \t a[%u]=%f", i, a[i] );
29: printf( "\n \n \n \t \t Для выхода нажмите любую клавишу." );
30: getch( );
31: free( a );
32: }
5. Работа программы
Введите
количество элементов n=6
Введите элементы:
a[0] = 1
а[1] =-9
а[2] =-4
a[3] = 5
а[4] = 7
а[5] =-2
Полученная последовательность: -9.000000 -4.000000 -2.000000
6. Проверка
Программа работает корректно.