Я пытаюсь скопировать 2d массив в другую переменную по ссылке, чтобы избежать ненужных вычислений.По сути, у меня есть два двухмерных массива, current_array и new_array, и я генерирую new_array из current_array, а затем заменяю.
Я пытаюсь запрограммировать игру жизни Конвея, используя openmp, но у меня возникают проблемы с копированием нового массива в старыйодин.Я пытался использовать * current_array = * new_array, ¤t_array = & new_array, ... и все другие комбинации.Я не знаю много о C или указателях, но учитель настаивает на том, чтобы мы использовали C.
void NextArray(int const height, int const width, int const CurrentArray[height][width], int NewArray[height][width]){
for(int i = 0; i < height; ++i){
for(int j = 0; j < width; ++j){
NewArray[i][j] = Newpoint(i,j, CurrentArray);
}
}
}
int main(){
int CurrentArray[height][width];
int NewArray[height][width];
InitialArray=fopen("matrix.txt", "r");
for(long long i = 0; i < height; ++i){
for(long long j = 0; j < width; ++j){
fscanf(InitialArray, "%d", &CurrentArray[i][j]);
}
}
NextArray(height, width, CurrentArray, NewArray);
CurrentArray = NewArray;
return 0;
}
Я ожидаю, что CurrentArray будет иметь ту же информацию, что и функция NextArray, если вы определите NewPoint следующим образом:
void NextArray(int const i, int const j, int const CurrentArray[height][width]){
if (CurrentArray[i][j]){
return 0;
}
return 1;
}
height = 2, width = 2 и «matrix.txt» в виде файла со следующими данными:
0 0
1 1
, тогда значение CurrentArray должно быть
1 1
0 0