|
||||
|
|
#1 (permalink) |
|
Nuovo della community ![]()
4 Messaggi
![]() |
In debug funziona ma in esecuzione no...
Salve ho creato un programma sulle liste, che presa in input una lista di interi aggiunge in coda alla lista un nuovo elemento con valore nel campo val pari alla somma dei valori degli ultimi 2 elementi della lista.
Il programma a parer mio è corretto, ma nn capisco perchè se lo faccio partire in debug questo funziona invece con il normale esegui nn va. Uso il programma dev-c++ versione 4.9.9.2. Vi posto anche il codice del programma help codice:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define max 3
typedef struct elem {
int val;
struct elem *next;
} elem, *list;
void fiblist(list l)
{
printf("Entro nella funzione \n");
elem *new1=malloc (sizeof(elem));
elem *first=l;
elem *current=first;
elem *prec=first;
if (current==NULL)
exit(1);
else
current=current->next;
if (current==NULL)
exit(1);
else
{
current=current->next;
prec=prec->next;
}
while (current->next!=NULL)
{
current=current->next;
prec=prec->next;
}
new1->val=(current->val)+(prec->val);
current->next=new1;
}
int main()
{
elem *new2=malloc (sizeof(elem));
elem *first=NULL;
int i;
for(i=0;i<max;i++)
{
new2=malloc (sizeof(elem));
new2->next=first;
first=new2;
}
elem *current=first;
while(current!=NULL)
{
printf("Inserire il valore: \n");
scanf("%d",¤t->val);
current=current->next;
}
fiblist(first);
current=first;
printf("Esco dalla funzione\n");
while(current->next!=NULL)
{
printf("%d ",current->val);
current=current->next;
}
current=first;
while(current!=NULL)
{
current=current->next;
free(first);
first=current;
}
getch();
return 0;
}
Ultima modifica di bottomap : 21-01-2010 a 15:20. |
|
|
|
|
|
#2 (permalink) |
|
Moderatore Globale ![]() ![]()
2,774 Messaggi
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ciao,
Ti invito ad incapsulare il codice negli appositi tag [code] e [/code] per agevolare la lettura e di conseguenza la probabilità di ottenere una risposta. Per quanto riguarda il problema in sé, in generale le differenze di comportamentro tra debug e release dipendono da un eccessiva confidenza con l'inizializzazione delle variabili e da puntatori che avrebbero dovuto essere null ed invece contengono valori spuri. Ad esempio, il new1 che inserisci in fondo alla lista nella funzione fblist non ha il valore next uguale a NULL per default... e' meglio non fare affidamento sul fatto che il compilatore lo azzeri al posto tuo. Al momento non ho possibilità di verificare il tuo codice... se ho un po'di tempo stasera gli do un'occhiata. Ciaociao ![]()
__________________
![]() Venite a farmi un saluto su http://www.bottomap.com/ - Come porre domande in modo intelligente - Hai mai dato un'occhiata al Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo... - Se un utente ti è stato d'aiuto usa il pulsante Commenta Intervento per aumentare la sua reputazione! "La violenza è l'ultimo rifugio degli incapaci" - I.Asimov (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato) |
|
|
|
![]() |
| Strumenti della discussione | |
| Modalità di visualizzazione | |
|
|
Tutti gli orari sono GMT +1. Attualmente sono le 04:36.












Modalità lineare

