Нужно выписать сетку 9х9 числового текстового файла в новый текстовый файл в том же формате C ++ - PullRequest
0 голосов
/ 27 февраля 2020

Это входной файл, который должен совпадать с моим выходным файлом

Это вывод, который у меня есть в данный момент (он становится ближе)

Первая часть проблемы, которую я выполнил, состоит в том, чтобы написать метод, который переносит текстовый файл сетки чисел 9x9 в двумерный массив и сохраняет каждую строку текстового файла в каждый слот памяти, в то время как другой слот массив содержит столбец чисел в каждом слоте. Вот код, чтобы показать, что:

void Grid::LoadGrid(char const * const)
{
    int m_grid[9][9];     
    ifstream fp ("Grid1.txt"); 
    for (int x = 0; x < 9; x++) 
    {
        for(int y =0; y < 9; y++) 
        {
            fp >> m_grid[x][y]; 
        }
    }

    for (int x = 0; x < 9; x++) 
    {
        for (int y = 0; y < 9; y++)
        {
            cout << m_grid[x][y] << " "; 
        }
        cout << endl;

        return;
        fp.close(); 
    }       
}

Это прекрасно работает. Вторая проблема заключается в том, чтобы теперь взять этот массив и вывести его в новый текстовый файл, который я назвал "GridOut.txt", вот код для этого:

     void Grid::SaveGrid(char const * const)
{
    int m_grid[9][9];
    ifstream fp("Grid1.txt");
    ofstream fout("GridOut.txt");

    for (int x = 0; x < 9; x++)
    {
        for (int y = 0; y < 9; y++)
        {
            fp >> m_grid[x][y];
            fout << m_grid[x][y];
        }
    }

    for (int x = 0; x < 9; x++)
    {
        for (int y = 0; y < 9; y++)
        {

         fout << m_grid[x][y] << " ";

        }
        fout << endl;


    }

}

Это создает новый файл и добавление значений, но он не в формате сетки 9x9, как должно быть.

Извините за мой плохой Engli sh и надеюсь, что он достаточно хорошо объяснен для понимания людьми.

1 Ответ

0 голосов
/ 27 февраля 2020
fout << m_grid[x][y] << endl;

Это ставит новую строку после каждого числа. Вы должны заменить это пробелом:

fout << m_grid[x][y] << " ";

И вместо cout << endl do fout << endl.

Это результат:

void Grid::SaveGrid(char const* const) {
  int m_grid[9][9];
  ifstream fp("Grid1.txt");
  ofstream fout("GridOut.txt");

  for (int x = 0; x < 9; x++) {
    for (int y = 0; y < 9; y++) {
      fp >> m_grid[x][y];
    }
  }

  for (int x = 0; x < 9; x++) {
    for (int y = 0; y < 9; y++) {
      fout << m_grid[x][y] << " ";
    }
    fout << endl;
  }
}
...