Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C++]Albero

  1. #1

    [C++]Albero

    codice:
     
    /*
    ### Copyright (c) 2004 Luca Francesca
    ### This script is provided under the terms of the GNU General Public License
    ### (see http://www.gnu.org/licenses/gpl.html for the full license text.)
    */
    #include <iostream>
    #include <ctime>
    #define __DEBUG__
    
    using namespace std;
    
    struct TreeNode
    {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int val, TreeNode *l, TreeNode *r)
        {
        	#if defined(__DEBUG__)
            		cout << "Added " << val << "\n";
        	#endif
        	this->val = val;
        	left = l;
        	right = r;
        };
    };
    
    class Tree
    {
    	private:
    		TreeNode *root;
    		void AddElem(TreeNode *aux, int val)
    		{
    			if(aux == NULL)
    			{
    				aux = new TreeNode(val, NULL, NULL);
    			}
    			else if(val <= aux->val)
    				AddElem(aux->left, val);
    			else if(val > aux->val)
    				AddElem(aux->right, val);
    		};
    		void InternalShowInOrder(TreeNode *P)
    		{
                      if (P->left) InternalShowInOrder(P->left);
                     cout << P->val << "\n";
                     if (P->right) InternalShowInOrder(P->right);
                    ;}
    	public:
    		Tree(int elem)
    		{
    			root = new TreeNode(elem, NULL, NULL);
    		};
    		void Add(int val)
    		{
    			AddElem(root, val);
    		};
    		void Print()
    		{
    			InternalShowInOrder(root);
    		}
    		~Tree(){ delete root;  root = NULL; };
    };
    
    int main(int argc, char *argv[])
    {
    	Tree tr(1);
    	srand(time(NULL));
    	
    	for(int i = 0; i < (rand()%10);i++)
    	{
    		tr.Add( i + (rand()%25) );
    		
    	}
    	tr.Print();
      char exit;
      std::cin.get(exit);
      return 0;
    }
    Perche visualizzo sempre e solo 1???

    Tnk
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  2. #2
    codice:
    /*
    ### Copyright (c) 2004 Luca Francesca
    ### This script is provided under the terms of the GNU General Public License
    ### (see http://www.gnu.org/licenses/gpl.html for the full license text.)
    */
    #include <iostream>
    #include <ctime>
    #define MAX 100
    #define __DEBUG__
    
    using namespace std;
    
    struct TreeNode
    {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int val, TreeNode *l, TreeNode *r)
        {
        	#if defined(__DEBUG__)
            		cout << "Added " << val << "\n";
        	#endif
        	this->val = val;
        	left = l;
        	right = r;
        };
    };
    
    class Tree
    {
    	private:
    		TreeNode *root;
    		TreeNode* AddElem(TreeNode *aux, int val)
    		{
    			if(aux == NULL)
    			{
    				return new TreeNode(val, NULL, NULL);
    			}
    			else if(val <= aux->val)
    				aux->left = AddElem(aux->left, val);
    			else if(val > aux->val)
    				aux->right = AddElem(aux->right, val);
    			return aux;
    		};
    		void InternalShowInOrder(TreeNode *P)
    		{
         if (P->left) InternalShowInOrder(P->left);
         cout << P->val << "\n";
         if (P->right) InternalShowInOrder(P->right);
        ;}
    	public:
    		Tree(int elem)
    		{
    			root = NULL;
    		};
    		void Add(int val)
    		{
    			root = AddElem(root, val);
    		};
    		void Print()
    		{
    			InternalShowInOrder(root);
    		}
    		~Tree(){ delete root;  root = NULL; };
    };
    
    int main(int argc, char *argv[])
    {
    	Tree tr(1);
    	srand(time(NULL));
    	
    	for(int i = 0; i < MAX;i++)
    	{
    		tr.Add( i + (rand()%MAX) );
    	}
    	tr.Print();
      char exit;
      std::cin.get(exit);
      return 0;
    }
    Risolto
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  3. #3
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429
    Provandolo col dev mi da errori sulle righe

    codice:
    srand(time(NULL));
    e


    codice:
    tr.Add( i + (rand()%25) );

    ho provato ad inserire anche la libreria #include <time.h>
    ma niente

  4. #4
    Originariamente inviato da Iena87
    Provandolo col dev mi da errori sulle righe

    codice:
    srand(time(NULL));
    e


    codice:
    tr.Add( i + (rand()%25) );

    ho provato ad inserire anche la libreria #include <time.h>
    ma niente
    includi anche la stdlib.h

    :gren:
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  5. #5
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429
    Originariamente inviato da andrea_NET-_DSL
    includi anche la stdlib.h

    :gren:
    Adesso funziona, grazie


    Ogni giorno che passa odio sempre di più il Dev

  6. #6
    Originariamente inviato da Iena87



    Ogni giorno che passa odio sempre di più il Dev
    xchè??

    Ricevevi quell'errore perchè la funzione rand() e srand() sono definite nella stdlib.h,e se non la includi non potrà mai funzionare nè in devc++ ,nè in qualsiasi altro compilatore/ide.
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  7. #7
    Utente di HTML.it L'avatar di Iena87
    Registrato dal
    Dec 2003
    Messaggi
    429
    Originariamente inviato da andrea_NET-_DSL
    xchè??

    Ricevevi quell'errore perchè la funzione rand() e srand() sono definite nella stdlib.h,e se non la includi non potrà mai funzionare nè in devc++ ,nè in qualsiasi altro compilatore/ide.
    lo odio (tra virgolette) perchè spesso mi da errori strani
    che dipendono quasi sempre da librerie mancanti, che se in un compilatore nn ci vogliono, qui ci vogliono...vabbè cmq era tanto per dire

  8. #8
    Originariamente inviato da Iena87
    lo odio (tra virgolette) perchè spesso mi da errori strani
    che dipendono quasi sempre da librerie mancanti, che se in un compilatore nn ci vogliono, qui ci vogliono...vabbè cmq era tanto per dire
    meglio cosi' :gren: i compilatori come il borland c++ builder che riescono a far "funzionare" la system() ad es ,che è inclusa nella stdlib.h, senza che venga inclusa certamente portano ad un stile di programmazione errata e non conforme allo standard ansi c
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.