Pagina 4 di 6 primaprima ... 2 3 4 5 6 ultimoultimo
Visualizzazione dei risultati da 31 a 40 su 54
  1. #31
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    proverò a correggere..anche se mi sembra che togliendo l'& non mi funzionava piu..cmq provo...

  2. #32
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    è vero ca....!!!!!!

    stava li l'errore!!

    ora infatti l'accesso funziona..

    non sai quanto ti sono grato!

    non rilsassarti troppo però eh che tra un po t faccio qualche altra domandina

    GRAZIE MILLE PER LA PAZIENZA E L'AIUTO

  3. #33
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Di nulla ...

    Da parte tua, riponi un po' piu' fiducia nei suggerimenti, anche se il codice l'ha impostato il prof ...

  4. #34
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    tornando al problema originale del post..

    ora ho necessità di trovare un nodo in un albero n.ario (composto da nodi, come quelli visti sopra)

    il mio schema in pseudocodice è il seguente:

    CERCA(nodo radice, nodo chiave)
    1- controlla radice. se radice = chiave, return radice
    2- se radice ha figli:
    - mentre i figli non sono finiti:
    - CERCA(figlio_corrente,chiave)

    in questo modo prima controllo sempre la radice del nodo attualmente in esame, poi con unciclo while controllo un per uno i figli, chiamando ricorsivamente la funzione sui figli.

    procedo inquesto modo perche i nodi non sono collegati fra di loro, nel senso che non esiste il puntatore al fratello, ma ho solo una lista di fgli per ogni nodo.

    il problema è che non funziona.. in quanto mi dice sempre che trova l'elemento anche se questo non è nell'albero.. inoltre poi con l'indirizzo che torna genera sempre seg.default

  5. #35
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    ecco il codice:
    codice:
    struct node *cerca(struct node *root,struct node *elemento){
    // cerca il nodo elemento nell'albero radicato in root
    	printf("nodo in esame: %s\n",root->name);
    	if (strcmp(root->name,elemento->name) == 0) {	// controlla radice
    		printf("trovato\n");
    		return root;
    	} else { 
    		if (root->children != NULL) {
    			iterator i = get_iterator(root->children);
    			while (has_next(i)) { 
    				struct node *temp = (struct node *)next(i);
    				//if (strcmp(temp->name,elemento->name) == 0) return temp;
    				return cerca(temp,elemento);
    			}
    		}
    	}		
    }
    da notare che per scorrere le liste dei figli uso degli "iteratori" che sono delle funzioncine pensate (obblgatorie da specifiche) appunto per scorrere una lista.
    codice:
    struct iterator {
    	struct NodoLista *pt;		
    }; 
    
    typedef struct iterator *iterator;
    
    iterator get_iterator(list l) {
    // crea un nuovo iteratore sulla lista l
    	iterator i = (iterator)malloc(sizeof(struct iterator));
    	if (l == NULL) {
    		i->pt = NULL;
    		return i;
    	}
    	i->pt = l;
    	return i;
    }
    int has_next(iterator i) {
    // se i non è alla fine della lista torna 1, altrimenti 0
    	if (i->pt == NULL) return 0;
    	else return 1;
    }
    
    void *next(iterator i) { 
    	void *prec; 
    	if (i->pt != NULL) { 
        		prec = (i->pt)->value; 
        		i->pt = (i->pt)->next;
        		return prec; 
     	} 
    	return NULL; 
    }

  6. #36
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    oregon...confido in te..

    intanto continuo a testare..

  7. #37
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    ho aggiunto un return null:

    codice:
    struct node *cerca(struct node *root,struct node *elemento){
    // cerca il nodo elemento nell'albero radicato in root
    	printf("stiamo cercando il nodo %s nell'albero %s\n",elemento->name,root->name);
    	if (strcmp(root->name,elemento->name) == 0) {	// controlla radice
    		printf("trovato\n");
    		return root;
    	} else { 
    		if (root->children != NULL) {
    			iterator i = get_iterator(root->children);
    			while (has_next(i)) { 
    				struct node *temp = (struct node *)next(i);
    				printf("nodo in esame: %s\n",temp->name);
    				//if (strcmp(temp->name,elemento->name) == 0) return temp;
    				return cerca(temp,elemento);
    			}
    		} return NULL;
    	}		
    }
    in questo modo non mi genera piu seg-default.. pero la ricerca termina quando un nodo non ha figli, quindi non torna indietro la chiamata ricorsiva in pratica.
    cioè quando visita un nodo che non è uguale all'elemento da cercare, invece di risalire e continuare la ricerca, sospende (credo a causa el return NULL che ho messo).

  8. #38
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322
    aiutooo!!

  9. #39
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Originariamente inviato da jacopos81
    aiutooo!!
    Abbi pazienza... la gente risponde appena può...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #40
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    322

    Re: Moderazione

    Originariamente inviato da LeleFT
    Abbi pazienza... la gente risponde appena può...


    Ciao.
    ci mancherebbe..

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.