PDA

Visualizza la versione completa : [C] Problemi liste dinamiche


lumage
29-01-2008, 19:35
Ciao a tutti. Ho un problema con un funzione che utilizza le liste dinamiche.

Il tipo che ho dichiarato sono questi:


typedef struct el{
int dato;
struct el*prox;}nodo;

typedef nodo*lista;

il prototipo della funzione :


void fattori(int,lista*);

la funzione in se calcola, preso un intero, i suoi divisori; la funzione :


void fattori(int val,lista*L){
int i;
lista nuovo,curs;
curs=*L;
for(i=1;i<=val;i++){
if(val%i==0){

nuovo=(lista)malloc(sizeof(nodo));
nuovo->dato=i;
nuovo->prox=NULL;

if(*L==NULL){
*L=nuovo;
printf("%d",i);}
else{
while(curs->prox!=NULL)
curs=(curs->prox);
curs->prox=nuovo;
printf("%d",i);}
}
}}

Se mi spiegate dove sbaglio :dh: :dh: ve ne sarei davvero grato. Ciao e grazie!!

oregon
29-01-2008, 19:36
In che senso "sbagli"?

Da cosa te ne accorgi?

C'e' un errore?

Un calcolo sbagliato?

Dicci qualcosa ...

lumage
29-01-2008, 19:40
giusto...

Allora quando la faccio andare arriva fino al ciclo while ma poi il programma si blocca e mi manda un messaggio di errore. Come compilatore uso dev-c++ e non mi segnala nessun errore quando compilo.

oregon
29-01-2008, 19:46
"...e mi manda un messaggio di errore..."

Sei timido? :)

Perche' non dici tutto quello che serve ...?

lumage
29-01-2008, 19:57
:D Non pensavo fosse fondamentale, in quanto il solito messaggio di errore di windows:

"Si verrato un errore in liste.exe, l'applicazione verr chiusa".

Che poi il messaggio che esce quando sbaglio le scanf non passando la variabile per indirizzo o cose del genere.

oregon
29-01-2008, 21:09
Originariamente inviato da lumage
:D Non pensavo fosse fondamentale, in quanto il solito messaggio di errore di windows:

"Si verrato un errore in liste.exe, l'applicazione verr chiusa".

Semmai "... verificato ..."

Questo NON il solito messaggio di Windows ... e' uno tra i tanti messaggi e niente pu fare supporre, senza provare il codice, che si verifichi proprio quell'errore (che indirizza la ricerca verso un errore relativo ad un puntatore ...). E' quindi "fondamentale" per avere un indizio da cui cominciare a fare un po' di debug ...

Quello che pero' manca e' il

main

di questo tuo programma, perche' e' importante capire come chiami la funzione e cosa fai prima di tale chiamata ...

Loading