Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

C++ breaks out of the loop when filling the array

So basically I am trying to create a loop that fills a matrix with random numbers. I need to make it so every column has a different range, unique to it.

    //Variables
    int lsx = 3;
    int lsy = 10;
    int lust[lsy][lsx];
    int i = 0;
    int l = 0;
    int shpp = 7;
    //List setup
    for (i = 0; i < lsy; i++)
    {
        for (l = 0; l < lsx; l++)
        {
            lust[i][l] = 0;
        }
    }
    while (true)
    {
        //List generator
        for (i = 0; i < lsy; i++)
        {
            for (l = 0; l < lsx; l++)
            {
                //Column 1
                if (i == 0)
                {
                    lust[i][l] = rand() % flx;
                    cout << lust[i][l] << '\n';
                }
                //Column 2
                if (i == 1)
                {
                    lust[i][l] = rand() % fly;
                    cout << lust[i][l] << '\n';
                }
                //Column 3
                if (i == 2)
                {
                    lust[i][l] = rand() % shpp;
                    cout << lust[i][l] << '\n';
                }
            }
            cout << "Endline reached! \n \n";
        }
        for (i = 0; i < lsy; i++)
        {
            for (l = 0; l < lsx; l++)
            {
                cout << lust[i][l] << " ";
            }
            cout << "\n";
        }
    }   
}

This only generates 3 lines. Does anyone have any ideas on why this could happen?
I tried changing some stuff around but only got weirder results that wouldn’t fill the array in completely eitherThis is what the program displays when I try and run it

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

for (l = 0; l < lsx; l++)
    {
    Column 1
    if (i == 0)
    }
    lust[i][l] = rand() % flx;
    cout << lust[i][l] << '\n';
    }
    Column 2
    if (i == 1)
    }
    lust[i][l] = rand() % fly;
    cout << lust[i][l] << '\n';
    }
    Column 3
    if (i == 2)
    {
    lust[i][l] = rand() % shpp;
    cout << lust[i][l] << '\n';
    }
}
cout << "Endline reached! \n \n";

You’re using i (the line iterator) to evaluate what you’re going to fill. Which means your code will only concern itself with lines 0, 1 and 2. Instead, shift that i to l – your column iterator. It should work.

Also, consider removing the while true loop. Not only is it redundant, it’s also pretty dangerous considering there’s no break condition – in this case it’s safe, since you’ll be around to shut it down, but as a good practice stay out of while(true) unless you can’t write your break condition as a boolean expression

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading