Как говорится в вопросе, я пытаюсь передать многомерные массивы в функцию, чтобы распечатать их в файле для инженерного проекта.Формат, для которого вводятся данные, НЕ МОЖЕТ быть изменен, поэтому, пожалуйста, не предлагайте мне просто вводить его как другой тип данных.
Эта конкретная функция ожидает двухмерный массив (хотя у меня есть другие с тремя измерениямипосле этого), где ничего не известно о размере массива до времени выполнения.Я знаю, что должен использовать указатели, чтобы указывать на каждую строку массива в отдельности, но я понятия не имею, что такое синтаксис для передачи его в функцию.В следующем коде рассматриваемый массив является «блоком».Основная функция - это небольшой пример тестирования, который я сделал, чтобы попытаться заставить его работать:
#include<fstream>
using namespace std;
void of_write_blocks(string filename, string block_type[], int **block,
int grid[][3], string grade_type[], int grade[][3], int n_blocks, int m[])
{
ofstream file_out(filename.c_str(),ios::app);
file_out<<"\nblocks\n(\n";
for(int i=0;i<n_blocks;++i) {
file_out<<" "<<block_type[i]<<" ( ";
for(int j=0;j<m[i];++j)
file_out<<block[i][j]<<" ";
file_out<<") ( ";
file_out<<grid[i][0]<<' '<<grid[i][1]<<' '<<grid[i][2]<<" ) ";
file_out<<grade_type[i]<<" ( ";
file_out<<grade[i][0]<<' '<<grade[i][1]<<' '<<grade[i][2]<<" )\n";
}
file_out<<");\n";
}
//testing example:
int main()
{
int block[6][9];
for(int i=0; i<6;++i)
for(int j=0; i<9;++j)
block[i][j] = i*j;
int grid[6][3];
for(int i=0; i<6;++i)
for(int j=0; i<3;++j)
block[i][j] = i*j;
int grade[6][3];
for(int i=0; i<6;++i)
for(int j=0; i<3;++j)
block[i][j] = i*j;
string grade_type[6] = {"simpleGrading"};
string block_type[6] = {"hex"};
int m[6] = {8};
int n_blocks = 6;
of_write_blocks("name",block_type,block,grid,grade_type,grade,n_blocks,m);
}
любая помощь приветствуется!