Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C++] Problema BST

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152

    [C++] Problema BST

    Ragazzi in un algoritmo di creazione BST ( alberi ) , inserimento elemennti nell'albero, e visualizzazione degli elementi nella compilazione non mi da errore, ma nell'eseguibile non visualizza i dati, ed esce senza aver dato nulla in output, dov'è l'errore ?

    codice:
    #include<iostream>
    
    using namespace std;
    
    typedef struct nodo{ 
                        int info;
                        nodo *left;
                        nodo *right;
                        }tree;
    
    void insert(tree *&root,int elem);
    void symmetric_order(tree *root);
    void pre_order(tree *root);
    void post_order(tree *root);
    
    
    
    
    
    int main()
    { tree *root,*prev;
      int elem;
      char scelta;
      root=NULL;
      do 
       {cout<<"Inserisci il valore "<<endl;
        cin>>elem;
        insert(root,elem);
        cout<<"Vuoi inserire un altro elemento?"<<endl;
        cin>>scelta;
       }
       while((scelta=='y')||(scelta=='Y'));
       cout<<root->info;
       cout<<root->left;
       cout<<root->right;
       system("PAUSE");
       cout<<"\n Digita 1 per visualizzare l'albero in symmetric-order";
       cout<<"\n Digita 2 per visualizzare l'albero in pre-order";
       cout<<"\n Digita 3 per visualizzare l'albero in post-order  ";
       cin>>scelta;
       switch(scelta)
                {case 1:
                        {symmetric_order(root);
                         break;}
                 case 2:
                        {pre_order(root);
                        break;}
                 case 3:
                        {post_order(root);
                        break;}
                 }
                 
       
      system("PAUSE");
      return 0;
    }
    
    
    
    
    void symmetric_order(tree *root)
    {     if(root==NULL)
            return;
          else
                {symmetric_order(root->left);
                 cout<<root->info;
                 cout<<"  ";
                 symmetric_order(root->right);
                 }
          return;
    } 
    
    void pre_order(tree *root)
    {    if(root==NULL)
            return;
          else
                {pre_order(root->left);
                 pre_order(root->right);
                 cout<<root->info;
                 cout<<"  ";
                 }
          return;
    } 
    
    void post_order(tree *root)
    {     if(root==NULL)
            return;
          else
                {post_order(root->right);
                 post_order(root->left);
                 cout<<root->info;
                 cout<<"  ";
                 }
          return;
    } 
    
     void insert(tree *&root,int elem)
      {tree *new_node;
       if(root==NULL)
       {
           new_node=new tree;
           new_node->info=elem;
           new_node->left=NULL;
           new_node->right=NULL;
           root=new_node;
            }
        else
            {if(elem<root->info)
                   insert(root->left,elem);
             else if(elem>root->info)
                   insert(root->right,elem);
                   else
                        cout<<"\n Già inserito ";
                   }
        return;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Prima di controllare tutto il codice, hai fatto un po' di debugging, linea per linea, controllando i valori dei dati per capire dove può essere il problema?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    20
    codice:
      char scelta;
    
      [...]
    
       cout<<"\n Digita 1 per visualizzare l'albero in symmetric-order";
       cout<<"\n Digita 2 per visualizzare l'albero in pre-order";
       cout<<"\n Digita 3 per visualizzare l'albero in post-order  ";
       cin>>scelta;
    "scelta" è una variabile di tipo char. Lì fai inserire all'utente un intero, per cui, lo switch si ritrova a dover analizzare un intero memorizzato in una variabile di tipo char e non può mai essere eseguito nessuno dei tre casi. Creati una variabile intera e fai il cin>> su quella, e così risolvi.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152
    grazie mille, era quello l'unico problema

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.