Я работаю над проектом домашней работы, где мне нужно сделать измененный обход предварительного порядка через дерево на основе массива, и мне нужно передать массив к функции для ее использования, но я продолжаю получать ошибку в функции, заявляя, что это неверное преобразование от int
до int(*)[4]
, и я не могу понять, почему.Ошибка: неверное преобразование из int в int (*) [4] при вызове функций
Вот копия моего кода:
#include <iostream>
#include <fstream>
char code[10];
void preOrder(int tree[][4], int index, int treeDepth)
{
int tempIndex;
if(tree[index][2] == -1 && tree[index][3] == -1)
{
std::cout << char(tree[index][1]) << ": ";
for(int i = 0; i < treeDepth; i++)
std::cout << code[i];
std::cout << "\n"
}
else
{
for(int i = 0; i < 2; i++)
{
code[treeDepth] = 0;
tempIndex = tree[index][2];
preOrder(tree[index][2], tempIndex, treeDepth + 1);
code[treeDepth] = 1;
tempIndex = tree[index][2];
preOrder(tree[index][3], tempIndex, treeDepth + 1);
}
}
return;
}
int main()
{
int numNodes = 0, i = 0, j = 0;
int root = 0, treeDepth = 0;
int numcols = 4;
std::fstream inFile;
inFile.open("tree.dat");
inFile >> root;
inFile >> numNodes;
int huffmanTree[numNodes][numCols];
for(i = 0; i < numNodes; i++)
for(j = 0; j < numCols; j++)
inFile >> huffmanTree[i][j];
preOrder(huffmanTree, root, treeDepth);
inFile.close();
return 0;
}
Любая помощь будет принята с благодарностью. А также я не могу использовать указатели, и я могу также объявить huffmanTree глобальным, но не мог понять, как заставить это работать. А также извините за то, как все, что он разместил. Это моя первая публикация.
Ошибки:
ola.cpp: In function ‘void preOrder(int (*)[4], int, int)’:
ola.cpp:28:53: error: invalid conversion from ‘int’ to ‘int (*)[4]’ [-fpermissive]
ola.cpp:10:6: error: initializing argument 1 of ‘void preOrder(int (*)[4], int, int)’ [-fpermissive]
ola.cpp:31:53: error: invalid conversion from ‘int’ to ‘int (*)[4]’ [-fpermissive]
ola.cpp:10:6: error: initializing argument 1 of ‘void preOrder(int (*)[4], int, int)’ [-fpermissive]
ola.cpp: In function ‘int main()’:
ola.cpp:67:39: error: cannot convert ‘int (*)[(((sizetype)(((ssizetype)numCols) + -1)) + 1)]’ to ‘int (*)[4]’ for argument ‘1’ to ‘void preOrder(int (*)[4], int, int)’
Выражение 'tree [index] [2]' является 'int', а не' int (*) [4] ', я не уверен, что ошибка может быть более четкой. – user657267
Вот ошибки: – Jab2ak
'numCols' в вашем коде не объявлен. Это опечатка, или есть больше ошибок, о которых вы нам не рассказываете? –