Je travaille sur un arbre de recherche binaire. J'ai un problème pour aligner les nœuds en sortie. J'imprime l'ordre de tableau, pré-commande, inorder, postorder ... Le format de commande de tableau est aligné gauche comme je veux qu'il soit .. Im en utilisant fondamentalement le même code (setw et gauche, dans le même ordre) en ordre de tableau comme je suis avec l'ordre de pré-commande, et le reste .. Cependant, il ne sera pas aligné ..Problème de formatage de la sortie C++
J'ai tout essayé .. des trucs?
sortie correcte ..
Database Of Great Computer Scientists
>>> array order:
name leaf? index
---- ----- -----
Ralston, Anthony 0
Liang, Li 1
Von Neumann, John 2
Jones, Doug 3
Trigoboff, Michael 5
Goble, Colin leaf 7
Knuth, Donald 8
Turing, Alan leaf 12
Kay, Alan leaf 17
(items printed) (9)
>>> preorder:
name leaf? index
---- ----- -----
Ralston, Anthony 0
Liang, Li 1
Jones, Doug 3
Goble, Colin leaf 7
Knuth, Donald 8
Kay, Alan leaf 17
Von Neumann, John 2
Trigoboff, Michael 5
Turing, Alan leaf 12
(items printed) (9)
>>> inorder:
name leaf? index
---- ----- -----
Goble, Colin leaf 7
Jones, Doug 3
Kay, Alan leaf 17
Knuth, Donald 8
Liang, Li 1
Ralston, Anthony 0
Trigoboff, Michael 5
Turing, Alan leaf 12
Von Neumann, John 2
(items printed) (9)
>>> postorder:
name leaf? index
---- ----- -----
Goble, Colin leaf 7
Kay, Alan leaf 17
Knuth, Donald 8
Jones, Doug 3
Liang, Li 1
Turing, Alan leaf 12
Trigoboff, Michael 5
Von Neumann, John 2
Ralston, Anthony 0
(items printed) (9)
>>> retrieve Trigoboff, Michael
Trigoboff, Michael
>>> retrieve Kaye, Danny
not found
est ici le code pour afinde. Le reste des fonctions sont presque identiques dans la façon dont la mise en place à la sortie ..
void BST::displayInOrder(ostream& out, int parent)const
{
if (parent <= maxsize)
{
this->displayInOrder(out, 2 * parent + 1);
if (!items[parent].empty)
{
out << left
<< setw(27) << items[parent].instanceData;
out << right
<< setw(10);
if(!items[parent].isLeaf)
{
out << left
<< setw(11) << "leaf";
}
out << setw(12) << parent;
out << endl;
}
this->displayInOrder(out, 2 * parent + 2);
}
if(!parent)
{
itemsPrinted(out,size);
}
}
et est le code de l'ordre du tableau ici qui a laissé aligne ..
void BST::displayArrayOrder (ostream& out) const
{
out << ">>> array order:" << endl;
displayHeaders(out);
for(int index=0; index < maxsize+1; index++)
{
if (!items[index].empty)
{
out << left
<< setw(27) << items[index].instanceData;
out << right
<< setw(10);
if(index > size)
{
items[index].isLeaf = false;
out << left
<< setw(10) << "leaf";
}
if(items[2*index+1].empty && items[2*index+2].empty && index < size)
{
items[index].isLeaf = false;
out << left
<< setw(11) << "leaf";
}
out << setw(12) << index;
out << endl;
}
}
if(!parent)
{
itemsPrinted(out,size);
}
}
Est-ce que ce travail est fait? –