My goal is to read in a file at the command line, which is to be an adjacency matrix representation of a directed graph, and store the values in a 2D array. My plan is to read the number of integers on a line and use that as the size for my array(i.e. a 5 line input, with 5 integers per line would mean i would create a 5 x 5 array). However, to initialize an array, a constant value is needed, and counting the integers per line and storing it in a variable to use as my size parameter, does not allow me to create the array.
Sample input:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
Code:
#include <iostream> 
#include <sstream>
#include <fstream>      
using namespace std;
int main(int argc, char **argv) 
{
    string currentLine;
    int i, m = 0;
    int count;
    ifstream input(argv[1]);
    int storage[10000];
    printf("Original matrix: \n" );
    if(input.is_open())
    {
        while(getline(input, currentLine))
        {
            istringstream iss(currentLine);
            count = 0;
            while(iss >> i)
            {
                if(iss.eof())//at end of each line, ends loop
                {
                    count++;
                    storage[m] = i;
                    m++;
                    printf("%d \n", i);
                    break;
                }
                else
                {
                    count++;
                    storage[m] = i;
                    m++;
                    printf("%d  ", i);
                }
            }
        }
    }
int **matrix;
    matrix = new int*[count]; 
    for(int y = 0; y < count; y++)
        matrix[y] = new int[count];
    for(int r = 0; r < count; r++)
        for(int c = 0; c < count; r++)
            matrix[r][c] = storage[r+c];
    printf("first = %d ", matrix[0][0]);
    system("PAUSE");
    return 0;
}
Based on my input, I should create a 5 x 5 array. But the line
int matrix[count][count];
Gives me an error saying that the "count" size parameter should be a constant. Is my way of counting the size of the input to use an invalid way of doing this, or is there a way to create a constant to use as my size param?
 
     
     
    