[C] Aiuto urgente su un programma

Pierlu11
Salve, cerco qualcuno che possa darmi una mano a scrivere un programma in C per me troppo complicato...
Il programma deve leggere un testo con un numero arbitrario di righe in input e deve emettere le sequenze di tre parole (anche se separate da caratteri non alfabetici) che si ripetono più di una volta nel testo.

Non so da dove iniziare... spero possiate aiutarmi.

Risposte
BoG3
"Pierlu11":
deve emettere le sequenze di tre parole (anche se separate da caratteri non alfabetici) che si ripetono più di una volta nel testo.


Non credo di aver capito. Fai un esempio. Magari potrebbe aiutarti molto un analisi molto astratta, prima di iniziare a scriver il codice, giusto per avere un idea chiara di cio' che devi fare, ad esempio
Provo ad aprire il file in input
  se ci sono errori fermo il programma / richiedo di nuovo il file .. o quello che vuoi
Altrimenti leggo la prima riga/ parola/ lettera... ecc..


Prova, vedrai che poi sara' piu 'semplice. Avrai un idea degli strumenti di cui hai bisogno e sara' piu' facile trovarli per te e suggerirti per noi :)

Facci sapere come procede

Pierlu11
Scusa ma non ho capito cosa dovrei fare...
Intanto questo è un esempio:

BoG3
Dovresti fare un analisi:
Immaginiamo che io debba trovare il massimo tra i numeri in un vettore
Potresti pensare ad un analisi di questo tipo:
Se il vettore ha al meno 1 elemento allora pongo: massimo = vettore[0]
Ciclo (da i=1 a i< dimensione del vettore)
    se ci sono altri elementi nel vettore controllo se l'elemento i+1 è maggiore di massimo
        se lo è allora aggiorno massimo
    incremento i
Fine ciclo
Mostro / salvo risultati


PS: descrivi cio' che faresti a mano, poi lo schematizzi, tutto lì! :)

apatriarca
L'idea principale per risolvere questo problema consiste nell'implementazione di una qualche struttura di ricerca come un albero o una hash table per contenere le triplette (anche una specie di array ordinato potrebbe andare bene). Durante la lettura inserisci tutte le triplette del file nella struttura, quando una tripletta è già presente incrementi il corrispondente contatore, altrimenti inserisci la nuova tripletta con il contatore a 1. Alla fine della lettura leggi tutte le triplette ed estrai quelle che sono state inserite più di una volta (il cui contatore è maggiore di 1 insomma).

giogiomogio
quoto apatriarca.
e ti diro' di piu...
la base di questo algoritmo e' molto simile a quella di un compressore stile win zip....
a dire il vero loro usano un mix di algoritmi ma l'idea e' quella ;)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.