Originariamente inviato da elmapomapo
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!
Che errore ti da?
Ad ogni modo in questo pezzo di codice ci sono diversi problemi:
1. Incrementi la variabile di ciclo 2 volte: in questo modo salti metà degli elementi.
2. Dichiari una variabile locale al for, "somma", e poi la usi al di fuori del for stesso. È un errore, "somma" è come se non esistesse al di fuori di quel ciclo!
Una possibile soluzione è la seguente:
codice:
int somma_arr(){
int i;
int somma = 0; /* e' importante inizializzare a zero questa variabile!! */
for (i = 0; i < numeri; i++) {
somma += arr[i];
/* oppure: somma = somma + arr[i]; */
}
printf("La somma e\' %d\n", somma);
return somma;
}
Ho dato per scontato che "numeri" e "arr" siano variabili globali. Se sono dichiarate internalmente al main ovviamente non sono visibili in somma_arr ed in qualche modo dovrai passarle:
codice:
#include <stdio.h>
#include <stdlib.h>
/* prototipo della funzione */
int somma_arr(int *, int);
int main() {
char nome[10];
int arr[10];
int numeri;
int somma;
int i;
printf("Ciao, come ti chiami (MAX 10 caratteri)? ");
scanf("%s", nome);
printf("Bene il tuo nome è: %s\n", nome);
printf("Quanti numeri vuoi addizionare (MAX 10)? ");
scanf("%d", &numeri);
for (i = 0; i < numeri; i++) {
printf("Inserisci il numero i-esimo: ");
scanf("%d", &arr[i]);
}
/* Chiama la funzione che fa la somma. */
somma = somma_arr(arr, numeri);
printf("La somma dei numeri che hai inserito e\' %d\n", somma);
return 0;
}
/* Funzione di somma. */
int somma_arr(int *arr, int numero_elementi){
int i;
int somma = 0;
for (i = 0; i < numero_elementi; i++) {
somma += arr[i];
}
return somma;
}