Hi. I receive unexpected outcome in my programm. Instead of geting all combinations of 0, 1, 2 (i.e. 000, 001, ..., 222) I get only 000 001 002 010 011 012. Can somebody tell me why?
The idea of the progarmm is to create a crystal lattice. Each atom of the lattice has 3 coordinates (x, y, z). That's why I create class Atom. Then I create 3-dim array of the type derived from class Atom. Now each element of the class will represent an atom. If somebody has an idea how to implement it in a more sophisticated way, I will appreciate it. Thanks in advance!
Code:
#include <iostream>
 
using namespace std;
 
class Atom
{
    public:
 
    float x, y, z;
};
 
typedef class Atom AtomType;
 
int main ()
{
    float a=1; // lattice parameter
    int Lx=2, Ly=2, Lz=2; // number of translated lattices along each axis
 
    AtomType ***Atom1; // 3-dimensional dynamic array for atom type 1
 
    Atom1 = new AtomType** [Lx];
 
    for (int i=0; i<Lx; i=i+a) // start of for loop
    {
        Atom1[i] = new AtomType* [Ly];
    } // end of for loop
    for (int i=0; i<Lx; i=i+a) // start of the outer for loop
    {
        for (int j=0; j<Ly; j=j+a)
        {
            Atom1[i][j] = new AtomType [Lz];
        }
    } // end of the outer for loop
cout << "Atom1:" << endl;
    for (int i=0; i<=Lx; i++) // start of the 3 nested for loops to populate atoms of type 1
    {
        for (int j=0; j<=Ly; j++)
        {
            for (int k=0; k<=Lz; k++)
            {
                Atom1[i][j][k].x = i*a;
                Atom1[i][j][k].y = j*a;
                Atom1[i][j][k].z = k*a;
 
                cout << Atom1[i][j][k].x << "   " << Atom1[i][j][k].y << "   " << Atom1[i][j][k].z << endl;
            }
        }
    } // end of the 3 nested for loops to populate atoms of type 1
 
 
    for (int i=0; i<=Lx; i++) // start deleting array Atom1
    {
        for (int j=0; j<=Ly; j++)
        {
            delete[] Atom1[i][j];
        }
    }
    for (int i=0; i<=Lx; i++)
    {
        delete[] Atom1[i];
    }
    delete[] Atom1; // end of deleting array Atom1
    
    return 0;
}