1

I am developing a 2-Dimensional array in c++ using user input of rows and columns and want to allocate memory for the columns but I keep receiving an error which states;

A value of type "int" cannot be assigned to entity of type "int"

I know what the error means but how do I fix it it is annoying. Below is a portion of my code. Also I did not include the print section as I want to be able to transpose the array later.

    // Local variables
    int rows, columns;

    // Prompting the user to enter the number of rows and columns
    std::cout << "please input how many rows and columns you want accordingly: " << std::endl;
    std::cin >> rows >> columns;

    // Creating an array on the Heap memory and sizing it by the number of rows
    int* arr = new int[rows]; 

    // Assigning the values of rows
    for (int i = 0; i < rows; i++) { 

        // Creating a new heap for columns into arr[i]
        arr[i] = new int[columns];
    }

    // Getting the values of rows
    for (int i = 0; i < rows; i++) {
        // Assigning and Getting the values of columns
        for (int j = 0; j < columns; j++) {

            // Enter the elements of the array
            std::cout << "Please enter a number: " << std::endl;
            std::cin >> arr[i][&j];
        }
    }
0___________
  • 60,014
  • 4
  • 34
  • 74

2 Answers2

2

On this line:

arr[i] = new int[columns];

You're attempting to assign an int * value to an int.

You need to define arr as an int * and change the first new to new int *[]:

int **arr = new int *[rows]; 

Also, this is not correct:

std::cin >> arr[i][&j];

As you're using an address as an array index. You want:

std::cin >> arr[i][j];
dbush
  • 205,898
  • 23
  • 218
  • 273
0
#include <iostream>
using namespace std;

int main(int argc, char** argv) {
    
    int row,col;
    cout << "please input how many rows and columns you want accordingly: ";
    cin>>row>>col;
    //create array in heap.
    int **arr=new int*[row];
    for(int i=0;i<row;i++)
    {
        arr[i]=new int[col];
    }
    //getting value from user.
    for(int i=0;i<row;i++)
    {
        for(int j=0;j<col;j++)
        {
            cout<<"Enter a number ";
            cin>>arr[i][j];
        }
    }
    //display Elements.
        for(int i=0;i<row;i++)
    {
        for(int j=0;j<col;j++)
        {
            cout<<arr[i][j]<<" ";
        }
    }
    
    return 0;
}
Adrian Mole
  • 49,934
  • 160
  • 51
  • 83