CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2

Thread: Errors in code

  1. #1
    Join Date
    Oct 2015
    Posts
    4

    Lightbulb Errors in code

    Can anybody help me in rectifying the error?
    Code:
    #ifndef TREE_H_INCLUDED
    #define TREE_H_INCLUDED
    template<typename NODETYPE> class Tree;
    template<typename NODETYPE>
    class TreeNode
    {
        friend class Tree<NODETYPE>;
    public:
        TreeNode(const NODETYPE &d):leftPtr(0), data(d), rightPtr(0)
        {
    
        }
        NODETYPE getData() const
        {
            return data;
        }
    private:
        TreeNode<NODETYPE> *leftPtr;
        NODETYPE data;
        TreeNode<NODETYPE> *rightPtr;
    };
    #endif // TREE_H_INCLUDED
    Code:
    #ifndef TREE_H_INCLUDED
    #define TREE_H_INCLUDED
    #include <iostream>
    #include "TreeNode.h"
    using namespace std;
    template<typename NODETYPE> class Tree
    {
    public:
        Tree();
        void insertNode(const NODETYPE &);
        void preOrderTraversal() const;
        void inOrderTraversal() const;
        void postOrderTraversal() const;
    private:
        TreeNode <NODETYPE> *rootPtr;
        void insertNodeHelper(TreeNode<NODETYPE> **, const NODETYPE &);
        void preOrderHelper(TreeNode<NODETYPE> *)const;
        void inOrderHelper(TreeNode<NODETYPE> *) const;
        void postOrderHelper(TreeNode<NODETYPE> *) const;
    };
    template<typename NODETYPE>
    Tree<NODETYPE>::Tree()
    {
        rootPtr=0;
    }
    template<typename NODETYPE>
    void Tree<NODETYPE>::insertNode(const NODETYPE &value)
    {
        insertNodeHelper(&rootPtr, value);
    }
    template<typename NODETYPE>
    void insertNodeHelper(TreeNode<NODETYPE> **ptr, const NODETYPE &value)
    {
        if(*ptr==0)
        *ptr=new TreeNode<NODETYPE>(value);
        else
        {
            if(value<(*ptr)->data)
                insertNodeHelper(&((*ptr)->leftPtr), value);
            else
            {
                if(value>(*ptr)->data)
                    insertNodeHelper(&((*ptr)->rightPtr),value);
                    else
                        cout<<value<<" dup" <<endl;
            }
        }
    }
    template<typename NODETYPE>
    void Tree <NODETYPE> :: preOrderTraversal() const
    {
        preOrderHelper(rootPtr);
    }
    template<typename NODETYPE>
    void Tree <NODETYPE>::preOrderHelper(TreeNode<NODETYPE> *ptr) const
    {
        if(ptr!=0)
        {
            cout<<ptr->data<<' ';
            preOrderHelper(ptr->leftPtr);
            preOrderHelper(ptr->rightPtr);
        }
    }
    template<typename NODETYPE>
    void Tree<NODETYPE>::inOrderTraversal() const
    {
        inOrderHelper(rootPtr);
    }
    template<typename NODETYPE>
    void Tree<NODETYPE>:: inOrderHelper(const <NODETYPE> *ptr) const
    {
        if(ptr!=0)
        {
            inOrderHelper(ptr->leftPtr);
            cout<<ptr->data;
            inOrderHelper(ptr->rightPtr);
        }
    }
    template<typename NODETYPE>
    void Tree <NODETYPE>::postOrderTraversal() const
    {
        postOrderHelper(rootPtr);
    }
    template<typename NODETYPE>
    void Tree <NODETYPE>::postOrderHelper(const <NODETYPE> *ptr) const
    {
        if(ptr!=0)
        {
            postOrderHelper(ptr->leftPtr);
            postOrderHelper(ptr->rightPtr);
            cout<<ptr->data<<' ';
        }
    }
    #endif // TREE_H_INCLUDED
    Code:
    #include <iostream>
    #include <iomanip>
    #include "Tree.h"
    using namespace std;
    
    int main()
    {
        Tree<int> intTree;
        int intValue;
        cout<<"Enter 10 integer values\n";
        for(int i=0; i<10; i++)
        {
            cin>>intValue;
            intTree.insertNode(intValue);
        }
        cout<<"PreOrderTraversal\n";
        intTree.preOrderTraversal();
        cout<<"InOrderTraversal\n";
        intTree.inOrderTraversal();
        cout<<"PostOrderTraversal\n";
        intTree.postOrderTraversal();
        Tree <double> doubleTree;
        double doubleValue;
        cout<<fixed<<setprecision(1);
        cout<<"\n\nEnter 10 double values: ";
        for(int j=0; j<10; j++)
        {
            cin>>doubleValue;
            doubleTree.insertNode(intValue);
        }
        cout<<"PreOrderTraversal\n";
        doubleTree.preOrderTraversal();
        cout<<"InOrderTraversal\n";
        doubleTree.inOrderTraversal();
        cout<<"PostOrderTraversal\n";
        doubleTree.postOrderTraversal();
        cout<<endl;
        return 0;
    }
    It is showing 29 errors and I have tried everything I know?

  2. #2
    2kaud's Avatar
    2kaud is offline Super Moderator Power Poster
    Join Date
    Dec 2012
    Location
    England
    Posts
    7,825

    Re: Errors in code

    There are various syntax errors. eg
    Code:
    void insertNodeHelper(TreeNode<NODETYPE> **ptr, const NODETYPE &value)
    should be
    Code:
    void Tree<NODETYPE>::insertNodeHelper(TreeNode<NODETYPE> **ptr, const NODETYPE &value)
    and
    Code:
    void Tree<NODETYPE>:: inOrderHelper(const <NODETYPE> *ptr) const
    should be
    Code:
    void Tree<NODETYPE>:: inOrderHelper(TreeNode<NODETYPE> *ptr) const
    etc.

    I'm pulled everything together in one file for the sake of testing and the code below compiles with VS 2015.

    Code:
    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    template<typename NODETYPE> class Tree;
    
    template<typename NODETYPE>
    class TreeNode
    {
    	friend class Tree<NODETYPE>;
    public:
    	TreeNode(const NODETYPE &d) :leftPtr(0), data(d), rightPtr(0)
    	{
    
    	}
    	NODETYPE getData() const
    	{
    		return data;
    	}
    private:
    	TreeNode<NODETYPE> *leftPtr;
    	NODETYPE data;
    	TreeNode<NODETYPE> *rightPtr;
    };
    
    template<typename NODETYPE> class Tree
    {
    public:
    	Tree();
    	void insertNode(const NODETYPE &);
    	void preOrderTraversal() const;
    	void inOrderTraversal() const;
    	void postOrderTraversal() const;
    private:
    	TreeNode <NODETYPE> *rootPtr;
    	void insertNodeHelper(TreeNode<NODETYPE> **, const NODETYPE &);
    	void preOrderHelper(TreeNode<NODETYPE> *)const;
    	void inOrderHelper(TreeNode<NODETYPE> *) const;
    	void postOrderHelper(TreeNode<NODETYPE> *) const;
    };
    
    template<typename NODETYPE>
    Tree<NODETYPE>::Tree()
    {
    	rootPtr = 0;
    }
    
    template<typename NODETYPE>
    void Tree<NODETYPE>::insertNode(const NODETYPE &value)
    {
    	insertNodeHelper(&rootPtr, value);
    }
    
    template<typename NODETYPE>
    void Tree<NODETYPE>::insertNodeHelper(TreeNode<NODETYPE> **ptr, const NODETYPE &value)
    {
    	if (*ptr == 0)
    		*ptr = new TreeNode<NODETYPE>(value);
    	else
    	{
    		if (value<(*ptr)->data)
    			insertNodeHelper(&((*ptr)->leftPtr), value);
    		else
    		{
    			if (value>(*ptr)->data)
    				insertNodeHelper(&((*ptr)->rightPtr), value);
    			else
    				cout << value << " dup" << endl;
    		}
    	}
    }
    
    template<typename NODETYPE>
    void Tree <NODETYPE> ::preOrderTraversal() const
    {
    	preOrderHelper(rootPtr);
    }
    
    template<typename NODETYPE>
    void Tree <NODETYPE>::preOrderHelper(TreeNode<NODETYPE> *ptr) const
    {
    	if (ptr != 0)
    	{
    		cout << ptr->data << ' ';
    		preOrderHelper(ptr->leftPtr);
    		preOrderHelper(ptr->rightPtr);
    	}
    }
    
    template<typename NODETYPE>
    void Tree<NODETYPE>::inOrderTraversal() const
    {
    	inOrderHelper(rootPtr);
    }
    
    template<typename NODETYPE>
    void Tree<NODETYPE>::inOrderHelper(TreeNode<NODETYPE> *ptr) const
    {
    	if (ptr != 0)
    	{
    		inOrderHelper(ptr->leftPtr);
    		cout << ptr->data;
    		inOrderHelper(ptr->rightPtr);
    	}
    }
    
    template<typename NODETYPE>
    void Tree <NODETYPE>::postOrderTraversal() const
    {
    	postOrderHelper(rootPtr);
    }
    
    template<typename NODETYPE>
    void Tree <NODETYPE>::postOrderHelper(TreeNode <NODETYPE> *ptr) const
    {
    	if (ptr != 0)
    	{
    		postOrderHelper(ptr->leftPtr);
    		postOrderHelper(ptr->rightPtr);
    		cout << ptr->data << ' ';
    	}
    }
    
    
    int main()
    {
    	Tree<int> intTree;
    	int intValue;
    
    	cout << "Enter 10 integer values\n";
    
    	for (int i = 0; i<10; i++)
    	{
    		cin >> intValue;
    		intTree.insertNode(intValue);
    	}
    
    	cout << "PreOrderTraversal\n";
    	intTree.preOrderTraversal();
    
    	cout << "InOrderTraversal\n";
    	intTree.inOrderTraversal();
    
    	cout << "PostOrderTraversal\n";
    	intTree.postOrderTraversal();
    
    	Tree <double> doubleTree;
    	double doubleValue;
    
    	cout << fixed << setprecision(1);
    	cout << "\n\nEnter 10 double values: ";
    
    	for (int j = 0; j<10; j++)
    	{
    		cin >> doubleValue;
    		doubleTree.insertNode(intValue);
    	}
    
    	cout << "PreOrderTraversal\n";
    	doubleTree.preOrderTraversal();
    
    	cout << "InOrderTraversal\n";
    	doubleTree.inOrderTraversal();
    
    	cout << "PostOrderTraversal\n";
    	doubleTree.postOrderTraversal();
    
    	cout << endl;
    	return 0;
    }
    All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!

    C++23 Compiler: Microsoft VS2022 (17.6.5)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured