क्यों मेरी 2 डी सरणी के 2 पंक्ति रैम से यादृच्छिक मान ले जा रहा है?

वोट
1

इसलिए मैं वर्ग के लिए इस परियोजना पर काम कर रहा हूँ, और मैं पाश के लिए एक का उपयोग कर एक 2d सरणी को मान निर्दिष्ट करने के लिए कोशिश कर रहा हूँ, लेकिन मैं एक जोड़े को समस्याएं आ गए हैं। यहाँ मेरी कोड है:

#include <iostream>
#include <string>
using namespace std;

const int MAX = 10;

int main()
{

    int matrix2[MAX][MAX];
    int matrix1[MAX][MAX];


      int i, j;

      j=0;
    for (i=0; i < MAX; i++){

        matrix1[i][j] = i + 5;

        for (j=1; j < MAX; j++){
            matrix1[i][j] = matrix1[i][j-1] + 4;

            cout << matrix1[i][j] <<  ;
        }
        cout << endl;
    }




}

और यह यह क्या आउटपुट है:

9 13 17 21 25 29 33 37 41 
1422620036 1422620040 1422620044 1422620048 1422620052 1422620056 1422620060 1422620064 1422620068 
10 14 18 22 26 30 34 38 42 
11 15 19 23 27 31 35 39 43 
12 16 20 24 28 32 36 40 44 
13 17 21 25 29 33 37 41 45 
14 18 22 26 30 34 38 42 46 
15 19 23 27 31 35 39 43 47 
16 20 24 28 32 36 40 44 48 
17 21 25 29 33 37 41 45 49   

और इस उत्पादन मैं पाने के लिए कोशिश कर रहा हूँ है:

5   9   13  17  21  25  29  33  37  41  
6   10  14  18  22  26  30  34  38  42  
7   11  15  19  23  27  31  35  39  43  
8   12  16  20  24  28  32  36  40  44  
9   13  17  21  25  29  33  37  41  45  
10  14  18  22  26  30  34  38  42  46  
11  15  19  23  27  31  35  39  43  47  
12  16  20  24  28  32  36  40  44  48  
13  17  21  25  29  33  37  41  45  49  
14  18  22  26  30  34  38  42  46  50

अगर किसी को मैं क्या कर सकता दूसरी पंक्ति ठीक करने के लिए, और यह भी मैं क्यों पहले कॉलम मुद्रण नहीं है पूछ रहा हूँ

19/09/2018 को 12:59
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
4

jहै 0केवल पहले "के लिए iयात्रा"; अन्य सभी मामलों में यह है MAX
मामलों में यह वह जगह है जहाँ में MAX, matrix[i][j]व्यवहार अपरिभाषित है।

मजबूत समाधान पाशन और कुछ नहीं के लिए अपने पाश चर का उपयोग करने के लिए है।
संभव के रूप में छोटे एक दायरे में सब कुछ घोषणा करते हैं।

for (int i = 0; i < MAX; i++){
    matrix1[i][0] = i + 5;
    for (int j = 1; j < MAX; j++){
        matrix1[i][j] = matrix1[i][j-1] + 4;
        cout << matrix1[i][j] << " ";
    }
    cout << endl;
}
19/09/2018 को 13:09
का स्रोत उपयोगकर्ता

वोट
2

समस्या यह है कि है jसमय में रीसेट नहीं है, इसलिए पर लाइन matrix1[i][j] = i + 5;जे सरणी के अंत अतीत है। की स्थापना ले जाएँ jएक लाइन आगे शून्य

for (i=0; i < MAX; i++){
    j = 0;

    matrix1[i][j] = i + 5;

    for (j=1; j < MAX; j++){
        matrix1[i][j] = matrix1[i][j-1] + 4;

        cout << matrix1[i][j] << " ";
    }
    cout << endl;
}

या बदलने matrix1[i][j] = i + 5;के लिए matrix1[i][0] = i + 5;के रूप में रिचर्ड Critten सुझाव

19/09/2018 को 13:05
का स्रोत उपयोगकर्ता

वोट
0

j के अपने रीसेट लूप के अंदर होना चाहिए। दूसरे दौर (i = 1) में, जे मैक्स के रूप में शुरू होता है।

for (i=0; i < MAX; i++){
  j=0;
19/09/2018 को 13:06
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more