Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    25

    [C++] Esercizio su liste

    Salve a tutti! Sto provando a svolgere degli esercizi sulle liste, e a quanto pare non riesco ad effettuare l'eliminazione degli elementi.
    L'esercizio chiede di eliminare dalla lista ogni elemento la cui distanza dal precedente sia minore di K, in cui K è un intero che viene passato alla funzione.

    Questo è il codice che ho scritto, e che ovviamente non funziona:

    codice:
    void lista::distanzak(int k){
        nodo *p,*prec,*del;
        p=l;
        
        while (p->succ!=0){
            prec=p;
            p=p->succ;
            if ((p->valore<(prec->valore-k))|| (p->valore>(prec->valore+k))){
                del=p;
                p=p->succ;
                delete del;
            }else p=p->succ;
                
        }
          }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    25
    Ho modificato il codice così:

    codice:
    void lista::distanzak(int k){
        nodo *p,*prec,*del;
        p=l;
        
        while (p!=0 && p->succ!=0){
            prec=p;
            p=p->succ;
            int x=prec->valore+k;              //Ho aggiunto queste variabili per controllare le                      
                                                        //  operazioni svolte
            int y=prec->valore-k;
            cout<<"valori:"<<x<<" , "<<y;
            if ((p->valore<y)|| (p->valore>k)){
                del=p;
                prec->succ=p->succ;
                
                delete del;
                
                p=p->succ;
                
            }
            else
                prec=p;
                p=p->succ;
                
        }
                  
    }
    Il compilatore non mi da errori di sintassi ma l'output è:
    Stack trace:
    Frame Function Args
    0028A7E4 76451194 (00000108, 0000EA60, 00000000, 0028A918)
    0028A7F8 76451148 (00000108, 0000EA60, 000000A4, 0028A8F4)
    0028A918 610DC559 (0028A8F0, 61103832, 0053002B, 002B002B)
    0028AA08 610D9913 (00000000, 61103CF0, 0028AA24, 00000001)
    0028AA68 610D9DEE (5AD6FC80, 00000000, 00000000, 00000006)
    0028AB18 610D9F40 (00001180, 00000006, 00000001, 0000000A)
    0028AB38 610D9F6C (00000006, 00000006, 0028AB78, 5AD22715)
    0028AB68 610DA233 (5AD70480, 61276520, 0028ABD8, 5AD344FE)
    End of stack trace



    Chi mi da una mano?
    Grazie!

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.