Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] - Stampa di Array di Alberi

    non capisco perchè, ma si impalla la stampa! qualcuno mi sa dire se c'è un errore in queste void?

    Codice PHP:
    /* Questa deve stampare l'albero alla posizione Pos nell'array...*/
    void StampaAlbero
    (
      
    TREE *Albero
      
    int Pos
    )
    {
      
      
    printf("( %d "Albero[Pos].Padre+1);
      
    StampaAlbero(Albero[Pos].FiglioSxPos);
      
    StampaAlbero(Albero[Pos].FiglioDxPos);
      
    printf(" )");

      if( 
    albero == NULL )
      {
        
    printf("()");
      }
    }  
    /* StampaAlbero */

    void PrintTree

      
    TREE *ArrayAlberi/* Alberi da stampare */
      
    int Fine        /* Dimensione dell'array da stampare */
    )
    {
          
    int i;
          for(
    i=0i<Finei++)
          {
            
    StampaAlberoArrayAlberi);
            
    printf("\n");
            
    system("PAUSE");
          }
          
    system("CLS");    

    :master:

    ____1
    ___ 2 3
    __N N N N
    Dovrebbe stampare questo -> ( 1( (2 ( () () ) ( 3( () () ) ) )

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    156
    la chiamata recursiva ha sempre come secondo parametro lo stesso "Pos"...
    non è che per caso entri in un ciclo infinito?

    Cosa ti stampa di preciso?

  3. #3

    [C] - Visualizzazione Albero Binario

    Salve a tutti, qualcuno mi saprebbe dire come si può visualizzare un albero binario graficamente in C, utilizzando magari la funzione GotoXY:

    Codice PHP:
    void GotoXY(int xint y
    {
        
    COORD CursorPos = {xy};
        
    HANDLE hConsole GetStdHandle(STD_OUTPUT_HANDLE);
        
    SetConsoleCursorPosition(hConsoleCursorPos);

    Ve ne sarei grato... io ho scritto qualcosa, ma stampa solo il primo nodo e si blocca...

    La mia idea di partenza è questa, ma non so perchè alla prima chiamata ricorsiva si blocca, come se andasse in segmentation fault
    Codice PHP:
    void StampaAlbero
    (
      
    TREE *albero,
      
    int *X,
      
    int *Y,
      
    int *Dir,
      
    int *Index
    )
    {
      
    int xyDirezionei;
      
      
    x=*X;
      
    y=*Y;
      
    Direzione = *Dir;
      
    = *Index;
        
      if( 
    albero != NULL )
      {
         
         
    GotoXYx);
         
         
    printf"%d"albero->Padre+);
         
    getch(); 
         
         if( 
    Direzione == -)
         {
            
    Direzione = -1;
            
    i=2i;  
            
    x-x/i;
            
    y=y+1
            
    StampaAlberoalbero->FiglioSx, &x, &y, &Direzione, &);
         }
         
         
    Direzione 1;
         
         if( 
    Direzione == )
         {
           
    i=2i;  
           
    x+x/i;
           
    StampaAlberoalbero->FiglioDx, &x, &y, &Direzione, &);  
         }     
      }
      else
      {
         if( 
    Direzione == -)
         {
            
    i=2i;  
            
    x-x/i;
            
    y=y+1
         }
         else
         {
           
    i=2i;  
           
    x+x/i;
         }
         
         
    GotoXYx);
         
    printf"N" );
         
    getch(); 
      } 
            
      *
    Dir Direzione;
      *
    X=x;
      *
    Y=y;
      *
    Index=i;
      
    }  
    /* StampaAlbero */ 
    ma se lo stampo con questa
    Codice PHP:
    void StampaAlbero
    (
      
    TREE *albero
    )
    {
      if( 
    albero != NULL )
      {
          
    printf("( %d "albero->Padre+1);
          
    StampaAlberoalbero->FiglioSx );
          
    StampaAlberoalbero->FiglioDx );
          
    printf(" )");
      }
      else
      {
        
    printf("(N)");
      }

    La stampa avviene in modo corretto!

    Chi mi aiuta?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Ho unito le discussioni: ne era già stata aperta uno sullo stesso argomento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.