//Alberto Franco 558191 #include using namespace std; int main() { int A[1000]; int n,T; int a=0; int b=(-1); int S=0; cout << "Dammi una sequenza di al piu' 1000 interi diversi da 0 (se la sequenza e' piu' corta di 1000 segnala la fine della sequenza aggiungendo il valore 0 come sentinella):" << endl; cin >> A[0]; /*R:n<1000, A[0..n]!=0*/ for(n=1;(n<1000)&&(A[n-1]!=0); n++ ) { cin >> A[n]; } /*R: 0<=i<=a<=b<=n S = sum_a-b*/ for(int i=0;i<=n;i++){ T=0; /*R1: S = sum_a-b >= T = sum_i-c */ for(int c=i;c<=n;c++){ T=T+A[c]; if(T>S){ a=i; b=c; S=T; } } } cout << "Il segmento di array di somma massima e' quello compreso trs i due indici a="<< a <<"e b="<< b <<"ed il valore della somma e':"<< S << endl; return 0; }