2017-01-12 4 views
0

Das Programm wird nicht so ausgeführt, wie es ausgeführt werden sollte. Wenn ich die Elemente eingabe, dauert es mehr als 12 Elemente, die nicht passieren sollten. Bitte sagen Sie mir, wenn im Code etwas nicht stimmt. Ich versuche, drei 2D-Arrays getrennt auszugeben.Warum wird das Programm nicht richtig ausgeführt?

#include <iostream> 
using namespace std; 
int main() 
{ 
    int i, j, k; 
    int abc[2][2][3]; // three 2D arrays declared . 

    for (k = 0; k <= 2; k++) { 
     for (i = 0; i <= 1; i++) { 
      for (j = 0; j <= 1; j++) { 
       cin >> *(*(*(abc + k) + i) + j); // entering the element abc[i][j][k]. 
      } 
     } 
    } 

    // REQUIRED 3D ARRAY . 
    for (k = 0; k <= 2; k++) { 
     for (i = 0; i <= 1; i++) { 
      for (j = 0; j <= 1; j++) { 
       cout << *(*(*(abc + k) + i) + j) << "  "; 
      } // respective 2d arrays are printed . 
      cout << endl; 
     } 
     cout << endl; 
    } 
} 
+5

* Das Programm nicht, wie es * ausführen sollte ausführt - Ja, es ist - das Programm macht genau was du geschrieben hast. – PaulMcKenzie

+0

* Bitte sagen Sie mir, wenn im Code etwas nicht stimmt * - Sie sagen mir, ist irgendetwas nicht in Ordnung? Was erwarten Sie und was macht es? – EJoshuaS

Antwort

1

*(*(*(abc + k) + i) + j) ist abc[k][i][j].

Sie indexieren außerhalb des Arrays, das nicht definiert ist (Sie überschreiben höchstwahrscheinlich die Indexvariablen).

Ein Array von 3 2x2 Arrays wäre abc[3][2][2] - was für Ihre Schleife korrekt wäre.

(nicht Pointer-Arithmetik verwenden, wenn Sie mit Arrays arbeiten, es nur verwirrend.)

Verwandte Themen