Dizine dayalı bir ağaç üzerinden değiştirilmiş bir ön sipariş geçmesi gereken bir ev ödevi üzerinde çalışıyorum ve diziyi geçmem gerekiyor işlevi kullanmak için ancak int
için int(*)[4]
geçersiz bir dönüşüm olduğunu söyleyerek bu işlevin bir hatayı almaya devam ediyorum ve neden olduğunu anlayamıyorum. Herhangi bir yardım büyük takdirHata: int işlevinden int'e int (*) [4] arasındaki geçersiz dönüşüm
#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;
}
:
İşte benim kod kopyası. Ve ayrıca işaretçileri kullanamıyorum ve ayrıca huffmanTree'yi global olarak ilan edebilirim ancak bunu nasıl çalıştıracağımı anlayamadım. Ve her şey yolunda için üzgünüm. Bu benim ilk kez gönderim. Standart C++, bu izin verilmez: hat 67 üzerinde bir hata ile ilgili
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]' ifadesi 'int' değil, int (*) [4]' dir, hatanın daha açık olup olmadığından emin değilim. – user657267
İşte hatalar: Kodunuzdaki – Jab2ak
'numCols' eksik. Bu bir yazım hatası mı, yoksa bize söylemediğin daha fazla hata var mı? –