Ho bisogno di un consiglio

di il
1 risposte

Ho bisogno di un consiglio

Salve a tutti, dovrei, dato un file di testo con tot parole (prese da un articolo di giornale, o da un libro, non importa), fare in modo da prendere tutte le parole, e poi ordinarle in ordine alfabetico..tutto questo in C.

Mi sono bloccato sulla funzione per dividete tutto il testo in parole, per poi prendere le singole parole ed ordinarle in ordine alfabetico, oppure in ordine di ehm...come si dice quando una parola compare più volte..vabbè avete capito !!!. Considero una parola separata dall'altra dallo spazio (gli altri caratteri tipo !?< . ecc non li considero per ora).

io pensavo di metterli in un array, ma ce ne vorrebbe uno per ogni parola...oppure pensavo alle liste, ma non sò bene come implementare il tutto.

Potreste darmi una mano??? Non voglio il codice scritto in C, perchè voglio farlo da solo, ma vorrei un piccolo aiuto su come poter procedere!

1 Risposte

  • Re: Ho bisogno di un consiglio

    Ciao, allora.....per fare il tuo programmo ti consiglio di fare un ciclo in cui leggi un certo numero di byte dal file e li metti in una stringa temporanea, poi scorrila la stringa in cerca degli spazzi così da trovare inizio e fine delle parole. Quando trovi una parola la copi in un'altra stringa allocata dinamicamente che poi inserirai in una lista. Quando hai finito di scandire la stringa temporanea torni in cima al ciclo e leggi degli altri byte dal file finche questo non è finito. Terminato il ciclo ordini la lista alfabeticamente ed hai finito.

    Era vediamo più in dettaglio la perte in cui leggi i byte dal file e cerchi le parole. Ho pensato di farti trovare le parole in quel modo perchè:
    1) non sappiamo quale sia la massima lunghezza di un parola;
    2) non sappiamo quante parole ci sono in una righa, quindi non possiamo usare funzioni come la fscanf o la fgets per leggere le parole che, tra l'altro, richiedono di fissare una lunghezza massima delle stringhe che si leggono;
    3) non sappiamo quale sia la lunghezza massima di una righa, quindi come nel caso 2);

    Il perchè usare una lista ed il perchè allocare dinamicamente la stringa che conterrà la prola trovata nel testo dovresti capirlo da solo (vedi sopra).

    Un ultima cosa riguardo alla lista per facilitare la scrittura del codice che ordina la lista, in base all'argoritmo di ordinamento che intendi usare, valuta attentamente se ti conviene di più usare una lista unidirezionale(puoi andare solo avanti quando la scorri) o bidirezionale(conoscendo soltando un elemento della lista puoi tornare al precedente).

    Spero di non aver creato troppa confusione, se hai ulteriori domande chiedi pure.

    Ciao
Devi accedere o registrarti per scrivere nel forum
1 risposte