Ich arbeite an einem Hausaufgaben-Projekt, wo ich eine modifizierte Preorder Traversal durch einen Array-basierten Baum tun muss, und ich muss das Array übergeben zu der Funktion, um es zu benutzen, aber ich erhalte einen Fehler in der Funktion, die sagt, dass es eine ungültige Umwandlung von int
zu int(*)[4]
ist und ich kann anscheinend nicht herausfinden, warum.Fehler: ungültige Konvertierung von int zu int (*) [4] in Funktionsaufrufe
Hier ist eine Kopie meines Code:
#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;
}
Jede Hilfe wäre sehr dankbar. Und auch ich kann Zeiger nicht verwenden und ich kann HuffmanTree auch als global deklarieren, aber konnte nicht herausfinden, wie man das auch zum Arbeiten bringt. Und auch Entschuldigung für die Art, wie alles platziert wurde. Dies ist meine erste Zeitbuchung.
Die Fehler sind:
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)’
Der Ausdruck 'tree [index] [2]' ist ein 'int', kein' int (*) [4] ', ich bin nicht sicher, ob der Fehler klarer sein könnte. – user657267
Hier sind die Fehler: – Jab2ak
'numCols' in Ihrem Code ist nicht deklariert. Ist das ein Tippfehler oder gibt es mehr Fehler, von denen Sie uns nichts erzählen? –