Ciao a tutti, avrei un problema con questo programma, l'esercizio sarebbe il seguente:
Si scriva un programma che ricevuto in ingresso un array di numeri positivi, calcola e trasmette un array di valori in cui ogni elemento e` dato dalla somma del corrispondente valore dell’array di partenza con tutti i precedenti.
Non capisco però perché continuino ad uscirmi risultati strani, ovvero dopo aver inserito
1 2 3 4 5 6 7 8 9 10 11 (tra l'altro ci sarebbe un modo per evitare l'ultima richiesta dello scanf inutile nella while?)
il risultato è il seguente:
1 3 6 10 -1074794049 32780 28 36 45 55
Non capisco se sia un problema di xcode o del programma, che mi sembrerebbe giusto…
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
void sommarray(int[], int[], int);
int main(int argc, const char * argv[]) {
int valori[MAX], ris[MAX];
int i, val, dim;
i = 0;
scanf("%d", &val);
while (val > 0 && i < MAX) { //aggiungo solo valori positivi, in caso contrario finisco l'acquisizione
valori[i] = val;
i++;
scanf("%d", &val);
}
dim = i;
sommarray(valori, ris, dim);
for (i = 0; i < dim; i++) {
printf("%d ", ris[i]);
}
return 0;
}
void sommarray(int valori[], int ris[], int dim){
int i, j;
for (i = 0; i < dim; i++) {
for (j = 0; j <= i; j++) {
ris[i] += valori[j];
}
}
}