MasterDrive.it   
Vai indietro   MasterDrive.it > Software Development > C/C++



Rispondi
 
Strumenti della discussione Modalità di visualizzazione
Vecchio 21-01-2010, 15:10   #1 (permalink)
Nuovo della community

 
4 Messaggi

kyoboom novizio della comunita' ( + 10 )
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",&current->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.
kyoboom non è in linea   Bookmark and Share Rispondi quotando
Vecchio 21-01-2010, 15:20   #2 (permalink)
Moderatore Globale

 L'avatar di bottomap

 
2,774 Messaggi

bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )bottomap e' un tipo da prendere in considerazione ( + 650 )
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)
bottomap non è in linea   Bookmark and Share Rispondi quotando
Rispondi

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are disattivato

Salto del forum


Tutti gli orari sono GMT +1. Attualmente sono le 04:36.


Powered by vBulletin versione 3.8.0
Copyright © 2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Valid XHTML 1.0 Transitional  Creative Commons License

Eccetto dove diversamente specificato, i contenuti pubblicati in questa comunità sono rilasciati sotto Licenza
Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
La comunita' di MasterDrive.it non e' responsabile di eventuali imprecisioni presenti nelle pagine.