Один объект должен работать с частью данных (строка массива) из другого объектаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Один объект должен работать с частью данных (строка массива) из другого объекта

Сообщение Anonymous »

Я не профессиональный программист. Я учу своих детей и решил создать решатель для неграмм. Сам алгоритм-это не то, что меня касается, но правильный способ кодировать его.
Что мне нужно, так это идея или какой-то шаблон, как следует решить проблему. />
Я хотел бы проанализировать и изменить массив на основе дополнительных данных. Поскольку анализ в основном ограничен одной строкой (строка или столбцом) и одинаково для рядов и столбцов, я решил определить два класса: < /p>

Код: Выделить всё

class Line
{
short number_of_found_squares;
vector additional_data; //additional data that I mentioned about
...
void some_method1();
...
void solver_algorithm1();
void solver_algorithm2();
}

class Puzzle
{
short width, height;
vector[*] columns, rows; // no. of columns: width, no. of rows: height.
vector board; //array that I mentioned about
...
void some_method1();
...

void solver_algorithm1()
{
for(auto &line : columns)
line.solver_algorithm1();
for(auto &line : rows)
line.solver_algorithm1();
}
...
}

Puzzle myPuzzle('data.txt');
myPuzzle.solver_algorithm1();
Проблема состоит в том, что для того, чтобы сделать правильный расчет в строке :: solver_algorithm1 () , этот метод нуждается в доступе к mypuzzle.board - не только для получения значений, но и для их изменения. Более того, если метод solver_ algorithm1 () из i-th row (I-th Line Object в mypuzzle.rows ) изменяет значение mypuzzle.board [j] , J-Th-столбец (элемент mypuzzle.cols ) wught будет обновлен (например, чтобы увеличить nupres). /> Как это сделать хорошо? Затем этот массив будет скопирован в доску. Это просто, но я сомневаюсь, что это хорошо.

Код: Выделить всё

getter = function(i){return board[i][j]}
или function (i) {return poard [j] } , но я не знаю, как сделать это в C ++.

Может быть, весь мой подход плохой, и я должен сделать все из -за головоломки класса? Я сделал это уже таким образом, но код не был очень чистым, потому что:


[*] Я работаю над 1D данных, но использую два индекса: Порт [j] .
Мне нужно сделать две почти одинаковые функции: для столбцов и для рядов.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... her-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»