Originariamente inviato da elmapomapo
Ok il tuo funziona.
Ho provato a fare una funzione che addizionava gli array:
Codice PHP:
int somma_arr(){
int f;
for (f = 0; f < numeri; f++) {
int v = f++;
int somma = arr[f] + arr[v];
}
printf("Bene la somma dei tuoi caratteri e': %d\n", somma);
return somma;
}
Ma da un errore alla prima riga cioè alla definizione della funzione!
Ho provato a compilare il tuo codice aggiungendo come variabili globali
codice:
int numeri[10];
int arr[10];
E in ogni caso non compila. Non so perchè ti dia l'errore alla dichiarazione di funzione, sei sicuro di aver inserito o il prototipo (o cmq di averla dichiarata prima di usarla)?
Per sommare un array fai così:
codice:
int somma()
{
int somma = 0;
for (int i = 0; i < lunghezza_array; i++)
{
somma += arr[i];
}
return somma;
}
Nel tuo codice c'era il problema che non avresti calcolato la somma corretta. Supponiamo questo array:
codice:
int arr[] = { 1, 2, 3, 4 };
La somma corretta è 10, ok? Con il tuo algoritmo hai 7. Questo perchè (a parte che consideri 2 volte ogni membro dell'array) ad ogni ciclo sovrascrivi la somma calcolata finora. Queste sempre sperando di evitare un segmentation fault.
Questo perchè la lunghezza dell'array è 4. Se f = 3 --> v = 4. arr[4] non esiste --> segmentation fault.
Di più: se dichiari la variabile somma in quella posizione, avrai un errore anche su return. La variabile somma viene dichiarata all'interno del ciclo for, e una volta finito il ciclo, viene eliminata. somma non è visibile fuori dal blocco del ciclo for e quindi quando provi a fare "return somma" ti da un errore perchè la variabile non è visibile in quella posizione.
Ciao!