Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [c++] costruzione maze

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142

    [c++] costruzione maze

    ciao a tutti, devo creare un ADT labirinto, ci sto provando ma mi sa che sbaglio qualcosa.

    allora ho definito la struttura

    Codice PHP:
    typedef struct NODO{
               
    int type;
               
    bool visited;
               
    NODO *right;
               
    NODO *down;
        }; 
    poi nel main..

    Codice PHP:
    int main(){

    int lab[10][10];
    int m=10;

    NODO *head=new NODO;
    head->type=lab[m][m];
    head->right=NULL;
    head->down=NULL;
    for (
    int i=m-1;i>0;i--){
        
    NODO *new_node=new NODO;
        
    new_node->type=lab[i][i];
        
    new_node->right=destro(head,lab,i,i); // errore
        
    new_node->down=sotto(head,lab,i,i);
        
    head=new_node;
    }
    system ("pause");

    alla linea segnata mi da questo errore
    conversion from `NODO*' to non-scalar type `NODO' requested

    la dichiarazione di destro è (sperando che sia fatta bene):

    Codice PHP:
    NODO destro (NODO nodo_maze,int mat[][10],int i,int j){ 
    cosa sbaglio? grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Il campo right di "stuct NODO" è un puntatore a NODO, mentre la funzione destro() restituisce un valore di tipo NODO e non puntatore a NODO...

    EDIT: anzi no probabilmente l'errore si riferisce al fatto che il primo parametro che passi alla funzione è un puntatore a NODO, mentre il prototipo prevede un tipo NODO... ciò non toglie che anche la prima cosa sia sbagliata.

    Rivediti bene il codice...
    every day above ground is a good one

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142
    gentilmente potresti correggermela che sto uscendo pazzo. grazie

    edit: modificata in questo modo, potrebbe andare bene?

    Codice PHP:
    NODO destro (NODO nodo_maze,int mat[][10],int i,int j){
        
    NODO *nodomaze_new=new NODO;
        
    nodomaze_new=NULL;
        if (
    nodo_maze!=NULL) {
            
    nodomaze_new->type=mat[i][j+1];
            
    nodomaze_new->down=nodo_maze;
            
    nodomaze_new->right=destro(nodo_maze->right,mat,i,j+1);
        }
    return 
    nodomaze_new;


  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Perché annulli nodomaze_new dopo l'allocazione? E' sbagliato... per il resto direi che hai modificato bene il tipo del valore restituito, poi se il resto del codice è corretto non lo posso sapere...
    every day above ground is a good one

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142
    Originariamente inviato da YuYevon
    Perché annulli nodomaze_new dopo l'allocazione? E' sbagliato... per il resto direi che hai modificato bene il tipo del valore restituito, poi se il resto del codice è corretto non lo posso sapere...
    se voglio mettere

    nodomaze_new->right=NULL
    nodomaze_new->down=NULL
    nodomaze_new->type=0

    devo farlo come ho scritto ora? non bastava fare solo

    nodomaze_new=NULL?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da atomico
    se voglio mettere

    nodomaze_new->right=NULL
    nodomaze_new->down=NULL
    nodomaze_new->type=0

    devo farlo come ho scritto ora?
    Sì.

    Originariamente inviato da atomico
    non bastava fare solo

    nodomaze_new=NULL?
    No, perché così facendo tu annulli il puntatore nodomaze_new, non i valori dei suoi campi...
    every day above ground is a good one

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 © 2025 vBulletin Solutions, Inc. All rights reserved.