Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    14

    [JAVA] Ordinamento elementi da file

    Ciao a tutti, ho da svolgere un esercizio ma non riesco a trovare una soluzione..

    In pratica ho un file.txt contenente Nome, Cognome e Matricola di alcuni studenti struttuarto in questo modo:
    Codice PHP:

    Nome        Cognome    Matricola
                    
    Gigi        Bianchi    002541    
    Alessandro    Rossi        002398
    Enzo        Verdi        012587
    Luca        Neri        005874
    Andrea    Marroni    009632
    Chiara    Azzurri    002254
    Renato    Grigi        036570 
    e devo leggere il file, ordinare gli studenti in ordine crescente in base alla matricola, poi devo ordinarli in base al cognome e poi in base a nome e cognome insieme... infine stampare a video i risultati ordinati ed inserirli in un nuovo file di testo.

    Il mio problema è come fare ad ordinare gli studenti.

    Grazie anticipatamente

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    14
    nessuno pls?

  3. #3
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Direi che devi vederti:

    Comparable

    e la classe Arrays

    A meno che non sia tu o doverti costruire un algoritmo di ordinamento...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    14
    Originariamente inviato da flikmax
    nessuno pls?
    esatto!non dovrei usare classi gia esistenti di ordinamento ma cercare di farne uno da me.. ma nn so come fare

  5. #5
    Il consiglio di Pastore12 è valido comunque.
    Guardati come funzionano i Comparable e prendi spunto da quello.
    Costruisci un oggetto Studente con nome,cognome e matricola e crea un metodo es. compareTo(Studente a) al suo interno metti la logica di comparazione e fai ritornare 1 se a va prima o 0 se a va dopo.

    In questo modo con un algoritmo qualsiasi di ordinamento di un vettore (es. BubbleSort) lo ordini come vuoi.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    14
    Originariamente inviato da flikmax
    esatto!non dovrei usare classi gia esistenti di ordinamento ma cercare di farne uno da me.. ma nn so come fare
    no non devo usare algoritmi di ordinamento prestabiliti ne usare il compareto ecc... non ci sono altri metodi anche se computazionalmente meno efficaci ?

  7. #7
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Originariamente inviato da flikmax
    no non devo usare algoritmi di ordinamento prestabiliti ne usare il compareto ecc... non ci sono altri metodi anche se computazionalmente meno efficaci ?
    'Scolta, qualunque algoritmo tu possa pensare per ordinare i tuoi dati è già stato pensato e scritto da qualche parte.
    In un corso di informatica che si rispetti vengono presentati almeno 3 o 4 algoritmi diversi di ordinamento:
    1. bubble sort (il più semplice, ma il meno performante per ordinare dati molto numerosi)
    2. insertion sort (caratteristiche simili al precedente, e se non ricordo male al corso di fondamenti ho visto solo questo dei due, per cui sull'altro potrei anche sbagliarmi...)
    3. merge sort (ricorsivo, e per questo semplice ed elegante, e molto veloce)
    4. quick sort (il più veloce per problemi di taglia grande, ma particolarmente complicato)

    Credo sia scontato che tu debba realizzare uno dei primi due algoritmi. Lo pseudocodice lo trovi facilmente sul libro di testo o anche su Santa Wiki.

    Del comparator puoi farne anche a meno, formalmente, ma dovrai comunque stabilire almeno un criterio per ordinare i tuoi elementi (e in realtà di criteri diversi ne hai tre). Implementare l'interfaccia comparator non significa altro che questo: definire un metodo m(b) tale per cui se a.m(b) > 0 allora a è maggiore di b. (a e b saranno entrambi studenti, mi raccomando...)

    Tu potrai fare 3 metodi diversi, uno per ogni possibile criterio di ordinamento, oppure un unico metodo con un parametro aggiuntivo che decide se fare l'ordinamento per matricola, nome, cognome o quant'altro.

    In casi come il tuo, il punto di partenza è senza dubbio scrivere un algoritmo che ordini un semplicissimo vettore di numeri disordinati. Poi lo estenderai per ordinare oggetti complessi come uno Studente.
    E' altrettanto fuori discussione che tu parta dallo pseudocodice di un semplice algoritmo di ordinamento esistente. Quindi scegline uno, comprendi come funziona (insertion sort funziona come faresti tu per ordinare un mazzo di carte) e scrivilo in java.
    Se invece pensi ancora di scrivere un tuo personalissimo algoritmo di ordinamento... in bocca al lupo, quando hai finito fammelo vedere che sono curioso di vedere di quanto batte la torre di hanoi (quinto algoritmo che si vede, talmente lento che quando il monaco tibetano finisce di ordinare i dischi, anche il mondo avrà finito di esistere).

    Ora, mettiti all'opera e scrivi un po' di codice.
    (anche la faccina che saluta mi hanno cambiato... maledetti )
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    14
    ok mi cimeneterò con un bubble sort o un insertion sort penso..

    grazie per le risp vi terrò aggiornati in caso di problemi

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.