Основная проблема c заключается в том, что перед нами (в парах) была поставлена задача создать программу, в том числе - для чтения в текстовом файле и отображения ее в виде доски судоку в рамках нашего введения в кодирование в Uni. ,
Мы завершили большую часть кода и получили его достаточно хорошо. Тем не менее, мы боремся с тем, что я бы назвал основным аспектом этого. Код читает в файле и сохраняет его в классах private char 9 * 9 matrix. Мы запустили отладочную распечатку, чтобы проверить, что значения сохраняются в матрице, и это действительно так. Проблема связана с функцией getMatrixVal(int x, int y)
, которая, по нашему мнению, возвращает указатель, а не символ. Мы попытались вернуть указатель из функции и попытались сохранить его в указателе, а затем в переменной char. К сожалению, мы не очень хороши с указателями.
Из-за недавних отстранений от расписания университетов мы временно не можем получить совет и поддержку, в которых мы нуждаемся, и, следовательно, мы обращаемся сюда за советом. Кроме того, мы используем программу для программирования qt на Raspberry Pi - это может иметь какое-то отношение к нашим проблемам?
#include "grid.h"
#include <QDebug>
#include <QChar>
#include <QFile>
grid::grid(char matrix_value, const int x, const int y) {
matrix[x][y] = matrix_value;
//char c = matrix[x][y];
//qDebug() << QChar(c);
}
void grid::load_file() {
QFile file("/home/pi/Documents/ELEC1204/P6/SUDOKU.txt");
char character, c;
int i, j;
if(!file.open(QFile::ReadOnly)) {
qDebug() << "Error in opening file";
return;
} //Print error if message if unable to open file
for(i = 0; i < 9; i++) {
for(j = 0; j < 9; j++) {
SKIP: //Related to 'goto'
file.read(&character, sizeof(char)); //Read ini individual characters
if(character == '\xd' || character == '\xa')
goto SKIP;
//Skip character related to new lines
//Goes to 'SKIP' point in program
else if(character == 'X')
grid('_', i, j);
//Save 'X's as '_'
else
grid(character, i, j);
//Save numbers as they are
c = getMatrixVal(i, j);
qDebug() << "i = " << i << "| j = " << j << "| Character is: " << QChar(character) << "| Matrix character is: " << QChar(c);
//Print-out for debugging
}
}
file.close();
//Close file
}
// Possibly useful source:
// https://doc.qt.io/qt-5/qfile.html
// https://forum.qt.io/topic/60240/reading-file-byte-by-byte/5
char grid::getMatrixVal(const int x, const int y) {
char c = matrix[x][y];
//qDebug() << "Matrix[" << x << "][" << y << "] is: " << QChar(c);
return c;
}
void grid::printMatrix() {
for(int i = 0; i < 9; i++) {
for(int j = 0; j < 9; j++) {
qDebug() << matrix[i][j];
}
}
}
//Prints out matrix
//Debugging function