2017-01-14 14 views
2

Ich muss eine Funktion machen, die mein Array, das mit zufälligen Werten gefüllt ist, summiert. Meine Funktion gibt nur 0 zurück und keine tatsächliche Summierung des Arrays. Ich habe nicht viel Erfahrung mit Arrays oder zufälligen Werten, wie kann ich meine arrSum Funktion kodieren, um mir die Summe des Arrays zu geben, wenn sie aufgerufen wird?Summieren eines Array mit zufälligen Werten

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

#define SIZE 1000 

int arrSum(int arr[SIZE], int b) { 
    if (b < 0) { 
     return 0; 
    } else { 
     return arr[b] + arrSum(arr, b - 1); 
    } 
} 

int main() { 
    int inputNum; 
    int i; 
    int arr1[SIZE]; 
    int sum; 
    srand(time(0)); 

    printf("Enter an integer between 0 and 1000: "); 
    scanf("%d", &inputNum); 

    sum = arrSum(arr1, inputNum); 
    printf("sum: %6d\n\n", sum); 

    printf(" Pos | Val\n"); 
    printf("-------------\n"); 
    for (i = 0; i < inputNum; i++) { 
     printf("%4d |%4d\n", i, rand() % 1001); 
    } 
    return 0; 
} 
+2

'if (arr <0)' Was denkst du, was das tut? Beklagt sich Ihr Compiler beim Kompilieren mit Warnungen? – DeiDei

+0

Kompiliert dies mit allen Warnungen auf? –

Antwort

3

Der Grund ist zunächst, dass keine Werte im Array vorhanden sind. Aber nur 0.

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#define SIZE 1000 
int arrSum(int arr[SIZE], int b){ 
    if (b < 0) return 0; 
else return arr[b] + arrSum(arr, b-1); 
} 
int main(){ 
    int inputNum; 
    int i,q; 
    int arr1[SIZE] = {0}; 
    int sum; 
    srand(time(0)); 

    printf("Enter an integer between 0 and 1000: "); 
    scanf("%d",&inputNum); 

    for(q=0;q<inputNum;q++){ 
    arr1[q] = rand() % 1001; 
    } 

    sum = arrSum(arr1, inputNum); 
    printf("sum: %6d\n\n", sum); 

    printf(" Pos | Val\n"); 
    printf("-------------\n"); 
    for (i = 0; i < inputNum; i++){ 
    printf("%4d |%4d\n", i,arr1[i]); 
} 
    return 0; 
} 
0

die Logik hinter der Summe der Suche innerhalb der Funktion korrekt ist, unter der Annahme, dass b im Bereich des Array-Indizes ist. Das eigentliche Problem ist, dass Ihr Array nicht mit Zufallszahlen gefüllt ist - es ist mit Nullen gefüllt.

Wenn Sie das tun

int arr1[SIZE] = {0}; 

Sie jedes Element auf 0 initialisiert wird, und ändern sich nicht an jedem Punkt während des Programms. Ihre Funktion gibt also die Summe aus den Indizes 0 bis b zurück. Dies ist jedoch 0.

Verwandte Themen