1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| #include <stdio.h>
#define KMIN 1 /* taille de la suite des éléments consécutif à trouver*/
#define KMAX 100
#define VMIN 0 /* valeur d'un élément de la liste */
#define VMAX 100000
#define NMAX 10000
/* nombre de valeurs à entrer dans le tableau */
int nb_de_valeur(void) {
int N=0;
while ( N<KMIN || N>NMAX) {
scanf("%d",&N);
}
return N;
}
/* nombre d'entiers consécutifs à lire dans le tableau */
int nb_entier_consecutif(void) {
int K=0;
while ( K<KMIN || K>KMAX) {
scanf("%d",&K);
}
return K;
}
/* remplissage du tableau */
void le_tableau(int N,int tab[]) {
int i;
int val;
for (i=0;i<N;i++) {
val = -1;
while ( val < VMIN || val > VMAX ) {
scanf("%d",&val);
}
tab[i] = val;
}
}
/* lecture du tableau et recherche de la plus grande somme de K éléments consécutifs */
void la_somme(int K,int N, int tab[]){
int somme = 0;
int valeur_max = 0;
int i, j;
for (i=0; i<K; i++){
for (j=0; j<N; j++){
somme += tab[j];
if( somme >= valeur_max)
valeur_max = somme;
}
}
printf("%d\n", valeur_max);
}
/* fonction main */
int main(void){
int N, K;
int tab[NMAX];
N = nb_de_valeur();
K = nb_entier_consecutif();
le_tableau(N,tab);
la_somme(K, N, tab);
return 0;
} |
Partager