Вопрос:
Я пишу 2-мерную программу массива, и у меня возникают проблемы с ее распечаткой, я не уверен, что теперь я делаю свой 2d-массив корректным, вместо того, чтобы работать вообще. Любые советы будут полезны
void initialize(int* one, int** two); void replace(int* arr,int rows, int cols,int value); void fill(int* arr, int rows, int cols); void print(int** arr, int rows, int cols); ofstream outfile; ifstream infile; int arrayOne[100][100]; int arrayTwo[100][100]; int main(){ int rows,cols=0; cout << «Please input how many rows you would like in the array: «; cin >> rows; cout << «Please input how many columns you would like in the array: «; cin >> cols; fill(arrayOne[100][100],rows,cols); //print(arrayOne[100][100],rows,cols); system(«pause»); return 0; } void initialize(int* one, int* two){ for(int i=0;i<100;i++){ for(int j=0;j<100;j++){ arrayOne[i][j]=0; arrayTwo[i][j]=0; } } } void replace(int* arr,int rows,int cols,int value){ arr[rows][cols]=value; } void fill(int* arr, int rows, int cols){ int i=0; for(int r=0; r < rows; r++){ for(int c=0; c < cols; c++){ replace(arr,r,c,i++); } } } void print(int** arr, int r, int c){ for(int i=0;i<r;i++){ for(int j=0;j<c;j++){ cout << arr[i][j] << » «; } cout << endl; } } Лучший ответ:
Если вы прочитали сообщение об ошибке, в нем четко указывается ваша проблема. Говоря это, в нем не говорится о том, как его исправить. Вы идете по неровной траектории с фиксированными массивами…
/* arrayOne[100][100] This is an ‘int’ at the 101st row and 101st column. * It isn’t an address to anywhere in the array, in fact it is just beyond * the end of your array. * * Regardless, even if it were a pointer, it would point to a location in memory * that is not yours. We count starting with 0 in C/C++. So if you’d like to * reference the ‘whole’ array just pass it bare: */ fill (arrayOne, rows, cols); /* Of course this means that you need to fix the definition of ‘fill’ * and ‘replace’. */ void replace(int arr[100][100],int rows,int cols,int value){ arr[rows][cols]=value; } /* As you can see this isn’t going to be friendly */ void fill(int arr[100][100], int rows, int cols){ int i=0; for(int r=0; r < rows; r++){ for(int c=0; c < cols; c++){ replace(arr,r,c,i++); } } }
У вас есть другие проблемы, но их можно задать в других вопросах, когда вы сталкиваетесь с ними.
Ответ №1
Измените все int * arr и int ** arr на int arr [100] [] или на arr [] [100]. Я не помню, какой из них. но, это один из них наверняка.