1. Условие
Даны натуральное число n, действительные числа a1, а2, ... , аn. Получить
max(a1, a1 + а2, a1 + а2 + а3, ... ,a1 + a2 + ... + an).
2. Решение
Оператор программы задает количество элементов в массиве. Выделяется память под массив действительных чисел. Производится инициализация массива. В цикле определяется максимальное значение из следующих элементов:
a1, a1 + а2, a1 + а2 + а3, ... , a1 + a2 + ... + an,
и на экран выводится результат.
3. Алгоритм решения

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