2016-07-29 27 views
1

Also habe ich ein Programm erstellt, das eine zufällige 4x4-Matrix mit Werten zwischen 0 und 17 erzeugt. Danach würde es die Summe aller Zeilen und Spalten berechnen und drucken. Die Probleme sind, (1) Werte von Zeilensummen sind falsch, (2) das letzte Element, das die m[4][4] ist, scheint sich im Wert zu verdoppeln, was einen falschen Wert für die Summe von Spalte 4 auch gibt. Hier ist der Code:C - Falsche gedruckte Werte auf einer Matrix

srand(time(NULL)); 

printf("Generating matrix... "); 
getch(); 
printf("\n\n"); 

for (i = 1; i <= 4; i++) { 
    for (j = 1; j <= 4; j++) { 

     m[i][j] = rand() % 17; 
     printf("%d\t", m[i][j]); 

     if (i == 1) {       // Calculation of Row Sums 
      rSum[1] += m[i][j]; 
     } else if (i == 2) { 
      rSum[2] += m[i][j]; 
     } else if (i == 3) { 
      rSum[3] += m[i][j]; 
     } else if (i == 4) { 
      rSum[4] += m[i][j]; 
     } 

     if (j == 1) {      // Calculation of Column Sums 
      cSum[1] += m[i][j]; 
     } else if (j == 2) { 
      cSum[2] += m[i][j]; 
     } else if (j == 3) { 
      cSum[3] += m[i][j]; 
     } else if (j == 4) { 
      printf("\n"); 
      cSum[4] += m[i][j]; 
     } 
    } 
} 

getch(); 
printf("\n\n"); 

for (i = 1; i <= 4; i++) {     // Printing of Values 

    printf("Sum of Row %d: %d\n", i, rSum[i]); 
    printf("Sum of Column %d: %d\n", i, cSum[i]); 
    printf("-----------------------------------------------\n"); 
} 

return 0; 
+0

@ EruelSantos Wenn Ihre Frage gelöst ist, sollten Sie das Häkchen klicken Sie neben der Antwort, die Ihnen geholfen. – user3386109

Antwort

4

Arrays 0 sind in C. basierend Sie sollten alle Ihre Loops ändern, um diese Art und Weise zu wiederholen:

for (i = 0; i < 4; i++) { 

Und auch andere Teile des Codes ändern, in dem Sie expliziten Index verwenden, Werte. Dieser Teil kann drastisch vereinfacht werden.

Die Arrays rSum und cSum müssen mit 0 initialisiert werden. Wenn Sie dies nicht tun, werden möglicherweise die falschen Werte erläutert, die von Ihrem Programm berechnet wurden. Hier

ist eine verbesserte Version:

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

int main(void) { 
    int m[4][4]; 
    int rSum[4] = { 0 }; 
    int cSum[4] = { 0 }; 
    int i, j; 

    srand(time(NULL)); 

    printf("Generating matrix... "); 
    getch(); 
    printf("\n\n"); 

    for (i = 0; i < 4; i++) { 
     for (j = 0; j < 4; j++) { 
      m[i][j] = rand() % 17; 
      printf("%d\t", m[i][j]); 

      rSum[i] += m[i][j]; // Calculation of Row Sums 
      cSum[j] += m[i][j]; // Calculation of Column Sums 
     } 
     printf("\n"); 
    } 

    getch(); 
    printf("\n\n"); 

    for (i = 0; i < 4; i++) {   // Printing of Values 
     printf("Sum of Row %d: %d\n", i, rSum[i]); 
     printf("Sum of Column %d: %d\n", i, cSum[i]); 
     printf("-----------------------------------------------\n"); 
    } 

    return 0; 
} 
+0

Danke. Ich habs. <3 –