-1 #IND Frage

Ich bin derzeit am schreiben eines c++ für binäre Bäume. Das ganze ist geschrieben, doch egal welchen Ausdruck ich will zu bewerten, halte ich mit der Eingabeaufforderung den Befehl sagen Sie mir, -1.#IND. Irgendwelche Ideen auf, eine Lösung für dieses Problem oder sogar, was das bedeutet?

Vielen Dank im Voraus

Code:

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
template<typename T> struct TreeNode
{
    TreeNode(const T& value, TreeNode<T>* left = NULL, TreeNode<T>* right = NULL)
    {
        Value = value;
        Left = left;
        Right = right;
    }

    T Value;
    TreeNode<T>* Left;
    TreeNode<T>* Right;

    bool IsLeaf() const
    {
        return Left == NULL && Right == NULL;
    }
};


double ValueOf(TreeNode<char>* treeNode)
{


    if ( treeNode->IsLeaf() )
    {
        return treeNode->Value - '0';
    }
    else
    {
        switch(treeNode->Value)
        {
        case '+':
            return ValueOf(treeNode->Left) + ValueOf(treeNode->Right);
            break;

        case '-':
            return ValueOf(treeNode->Left) - ValueOf(treeNode->Right);
            break;

        case '*':
            return ValueOf(treeNode->Left) * ValueOf(treeNode->Right);
            break;

        case '/':
            return ValueOf(treeNode->Left) / ValueOf(treeNode->Right);
            break;
        }


    }
}



void main()
{
    string expression;

    cout << "Please enter an expression: ";

    cin >> expression;


    TreeNode<char> *newLeaf;
    TreeNode<char> *treeRoot;
    TreeNode<char> *currentNode;
    TreeNode<char> *newRoot;
    TreeNode<char> *newChild;


    treeRoot = NULL;
    currentNode = treeRoot;


    for (int i = 0; i < expression.length(); i++)
    {

        if ( (expression[i] >= 0 ) || ( expression[i] <= 9 ) ) 
        {

            newLeaf = new TreeNode <char> (expression[i]);


            if ( currentNode == NULL)
            {
                treeRoot = currentNode = newLeaf;
            }
            else
            {
                currentNode->Right = newLeaf;
            }
        }

        else if ( (( expression[i] == '+' || expression[i] == '-') || (expression[i] == '*' || expression[i] == '/' )) && currentNode->Right == NULL ) 
        {
            newRoot = new TreeNode <char> (expression[i]);
            newRoot->Left = treeRoot;
            treeRoot = newRoot;
            currentNode = newRoot;
        }

        else if (expression[i] == '*' || expression[i] == '/')
        {
            newChild = new TreeNode <char> (expression[i]);
            newChild->Left = currentNode->Right;
            currentNode->Right = newChild;
            currentNode = newChild;
        }
    } 

    double result = ValueOf(treeRoot);
    cout << "The result is: " << result << endl;
    system("pause");
}
  • "Ich habe ein Auto und egal wie ich den Schlüssel drehen, es lässt sich nicht einschalten. Warum?" Kann Ihnen nicht sagen, ohne zu sehen, das ganze Auto...Zeig uns deinen code, was dein input ist, was Sie erwarten und was Sie bekommen.
  • Da sind Sie, sir.
InformationsquelleAutor Mike | 2011-03-23
Schreibe einen Kommentar