.dsy:it. Pages (28): « First ... « 19 20 21 22 [23] 24 25 26 27 » ... Last »
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Algoritmi e strutture dati (http://www.dsy.it/forum/forumdisplay.php?forumid=207)
-- Progetto "FACCIALIBRO" (http://www.dsy.it/forum/showthread.php?threadid=37551)


Posted by Bloom on 24-02-2009 17:47:

Originally posted by Joy88
Solito quesito mattutino:

amico* trovaAmico(amico *a, char *nick)
{
amico *app = malloc(sizeof(amico));
app = a;
while(app!=NULL)
{
if (strcmp(nick, app->nome)==0)
return app;
app = app -> next;
}
return NULL;
}
Mi va in segmentation fault (strano eh!) alla strcmp nonostante abbia rincontrollato che il tipo amico abbia veramente un campo nome.. ovviamente char..

se chiedi di stampare il nome dell'amico a lo stampa?


Posted by Bloom on 24-02-2009 17:50:

Originally posted by Bloom
se chiedi di stampare il nome dell'amico a lo stampa?


Se si fai prima del while:
app->amico=a->amico;


Posted by Johnny88 on 25-02-2009 10:40:

Originally posted by Shaper
Scusate, ho un problema con la funzione strcpy().
Quando compila mi da questo warning:

faccialibro.c:380: warning: incompatible implicit declaration of built-in function 'strcpy'

L'ho usata per esempio in questa funzione:

void status_mod(element *ele, char *str){
strcpy(ele->status, str);
}

Nonostante questo mi sembra che funzioni tutto regolarmente, ma se mi da quel warning qualcosa di storto ci dev'essere...
Anche a voi da questo problema?

Ah, compilo con gcc attraverso NetBeans per Mac


ma string.h l'hai incluso?


Posted by Shaper on 25-02-2009 10:52:

Originally posted by Johnny88
ma string.h l'hai incluso?


..ops! :oops:
Chiedo venia, sono proprio fuso! :D

__________________
Eidolon64|Blog


Posted by Joy88 on 25-02-2009 12:14:

Originally posted by Bloom
se chiedi di stampare il nome dell'amico a lo stampa?


cmq no, non lo stampa..
Dietro consigli l'ho cambiato in questo modo:

amico* trovaAmico(amico* a, char *nick)
{
adiacenza* temp = malloc(sizeof(adiacenza));
temp->adiacente=a;
printf ("Ecco qui: %s\n", temp->adiacente->nome);
while(temp!=NULL)
{

if (strcmp(temp->adiacente->nome, nick)==0)
return temp->adiacente;
temp = temp -> next;
}
return NULL;
}

Inutile dire che il segfault ora va sulla printf e se la togliessi va sulla strcmp...

__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."

*Dante*


Posted by Johnny88 on 25-02-2009 12:50:

se sviluppi con linux prova ad usare valgrind che ti dice il perchè e il dove di una segmentation fault


Posted by Joy88 on 25-02-2009 13:14:

Uso il dev c in ambiente windows.........

__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."

*Dante*


Posted by Johnny88 on 25-02-2009 13:30:

ah ok, ma voi per il cammino minimo che algoritmo usate?


Posted by darkshadow on 25-02-2009 14:15:

Originally posted by Joy88
cmq no, non lo stampa..
Dietro consigli l'ho cambiato in questo modo:

amico* trovaAmico(amico* a, char *nick)
{
adiacenza* temp = malloc(sizeof(adiacenza));
temp->adiacente=a;
printf ("Ecco qui: %s\n", temp->adiacente->nome);
while(temp!=NULL)
{

if (strcmp(temp->adiacente->nome, nick)==0)
return temp->adiacente;
temp = temp -> next;
}
return NULL;
}

Inutile dire che il segfault ora va sulla printf e se la togliessi va sulla strcmp...


se posti come se sono fatte le strutture amico e adiacenza magari ti posso dare una mano

ciao

__________________
by Ð@rk§h@ÐØw


Posted by Bloom on 25-02-2009 15:17:

Originally posted by Joy88
cmq no, non lo stampa..
Dietro consigli l'ho cambiato in questo modo:

amico* trovaAmico(amico* a, char *nick)
{
adiacenza* temp = malloc(sizeof(adiacenza));
temp->adiacente=a;
printf ("Ecco qui: %s\n", temp->adiacente->nome);
while(temp!=NULL)
{

if (strcmp(temp->adiacente->nome, nick)==0)
return temp->adiacente;
temp = temp -> next;
}
return NULL;
}

Inutile dire che il segfault ora va sulla printf e se la togliessi va sulla strcmp...


Prova dopo temp->adiacente=a;
temp->adiacente->nome=a->nome
e poi la printf


Posted by Gehur on 25-02-2009 16:27:

allora ragazzi, andiamo con calma..ripartiamo da zero...se il seg faul è sulla printf vuol dire che temp->adiacente->nome ha contenuto random, oppure che temp->adiacente ha contenuto random, quindi

io come inizio stamperei a ed il suo contentuto (presumo a->nome)

poi se levi la printf, ti entra nel ciclo while? ti esegue l'if?? presumo di si visto che dici l'errore ti si sposterebbe sulla strcmp..cioè sul contenuto di temp->adiacente..


Posted by Gehur on 25-02-2009 16:30:

Johnny88 io uso visita in ampiezza di un grafo..


Posted by Joy88 on 25-02-2009 19:28:

Posto le mie strutture amico e adiacenza.. e confido nel tuo aiuto darkshadow!!
typedef struct adiacenza
{
struct amico* adiacente;
struct adiacenza* next;
struct adiacenza* prev;
} adiacenza;

typedef struct amico
{
char *nome;
struct adiacenza *adiacenza;
struct amico *next,*prev;
int visited;
int stato_amicizia;
}amico;

__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."

*Dante*


Posted by Johnny88 on 25-02-2009 19:32:

Originally posted by Gehur
Johnny88 io uso visita in ampiezza di un grafo..


Ma sei sicuro che la visita in ampiezza possa calcolare un cammino minimo?


Posted by Gehur on 25-02-2009 20:00:

be certo..la visita in ampiezza calcola il cammino minimo da un nodo a tutti gli altri nodi raggiungibili..ma non hai il libro??


All times are GMT. The time now is 01:44. Pages (28): « First ... « 19 20 21 22 [23] 24 25 26 27 » ... Last »
Show all 417 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.