Leggere o generare una sequenza di n numeri interi e un k <= n. Stampare l'array letto o generato. Individuare e stampare la sequenza di k numeri contigui avente somma massima.
Esempio. Se k = 3 e l’array è:
[3, 5, 8, 1, 9, 7]
La prima sequenza di tre elementi (3, 5, ha somma 16,
la seconda sequenza (5, 8, 1) ha somma 14,
la terza (8, 1, 9) ha somma 18,
la quarta (1, 9, 7) ha somma 17,
per cui viene stampata la sequenza (8, 1, 9).
IMPORTANTE: Organizzare il programma in funzioni (una per leggere l’ array, una per stamparlo, una per individuare la sequenza massima). Non utilizzare array ausiliari, non introdurre variabili globali.
Questo è quello che sono riuscito a fare io:
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
void crearray(int A[MAX], int n);
void stamparray(int A[MAX], int n);
void sequenzamassima(int A[MAX], int n);
main()
{
int i, n, A[MAX];
printf("Quanti elementi vuoi inserire nell' array?");
scanf("%d", &n);
crearray(A, n);
stamparray(A, n);
sequenzamassima(A, n);
system("PAUSE");
return 0;
}
void crearray(int A[MAX], int n)
{
int i;
printf("Inserisci gli elementi dell'array: ");
for(i=0; i<n; i++)
scanf("%d", &A[i]);
return;
}
void stamparray (int A[MAX], int n)
{
int i;
for(i=0; i<n; i++)
printf("%d", A[i]);
printf("\n\n");
return;
}
void sequenzamassima(int A[MAX], int n)
{
int i, j, k, somma, sommamax;
printf("Per quanti numeri vuoi effettuare le somme?");
scanf("%d", &k);
if(k>n){
printf("Inserisci un valore minore del numero degli elementi dell'array: ");
scanf("%d", &n);
}
else{
sommamax = 0;
for(i=0; i<n-k+1; i++){
somma = 0;
for(j=0; j<k; j++){
somma = somma + A[i+j];
}
if(somma > sommamax){
somma = sommamax;
}
}
}
return;
}
Sono sicuro di aver sbagliato la funzione per individuare la sequenza massima, soprattutto nell'ultima parte.
Non riesco ad individuare la sequenza di numeri che hanno la massima somma nell'array.
Aiutatemi vi prego.
Grazie in anticipo