Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] ordine di una lista

    Ho una lista di interi e devo vedere se è crescente, decrescente o disordinata...
    Il tutto funziona tranne se vi sono degli elementi consecutivi della lista che sono uguali ad esempio: 8,8,9 oppure 17,9,9
    come posso fare??

    posto il codice di sotto
    codice:
    int ordine(NODO *Lista)
    {
        if(Lista->value>Lista->successivo->value){
    
            while(Lista->successivo->successivo)
                if(Lista->successivo->value>Lista->successivo->successivo->value)
                {
                    Lista->successivo=Lista->successivo->successivo;
                    continue;
                }
                else return 0;
            return -1;
        }
        else if(Lista->value<Lista->successivo->value){
    
            while(Lista->successivo->successivo)
                if(Lista->successivo->value<Lista->successivo->successivo->value)
                {
                    Lista->successivo=Lista->successivo->successivo;
                    continue;
                }
                else return 0;
            return 1;
        }
    }

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Sostituisci > e < con >= e <=
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Già fatto ma non funziona lo stesso perchè se sono uguali mi entra nel primo if e se da lì non si verifica la condizione ritorna 0...
    Mi dimenticavo di dire che ritorno -1 se l'ordine è decrescente, 1 se crescente, 0 se disordinato

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    codice:
    int ordine(NODO *Lista)
    {
        if(Lista->value > Lista->successivo->value){
    
            while(Lista->successivo->successivo)
                if(Lista->successivo->value >= Lista->successivo->successivo->value)
                {
                    Lista->successivo=Lista->successivo->successivo;
                    continue;
                }
                else return 0;
            return -1;
        }
        if(Lista->value < Lista->successivo->value){
    
            while(Lista->successivo->successivo)
                if(Lista->successivo->value <= Lista->successivo->successivo->value)
                {
                    Lista->successivo=Lista->successivo->successivo;
                    continue;
                }
                else return 0;
            return 1;
        }
        return ordine(List->successivo);
    }
    Prova così...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Grazie, ma sono riuscito a risolverlo in un altra maniera ^.^

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.