Problema con file e stringhe

di il
8 risposte

Problema con file e stringhe

Salve , ho un problema del genere:
Dato un file contenente una serie di nomi, conclusi da END, del genere:
MARCO
CARLO
MARCO
LUCA
CARLO
MARCO
PEPPE
LUCA
LUCA
MARCO
**END**
scrivere un programma in c++ che identifichi per ogni nome quante volte è presente e stampi ogni nome con la rispettiva ricorrenza.
Non riesco proprio a capire il procedimento, ho provato ad utilizzare sia stringhe che array, tramite le funzioni strcmp() oppure confronti tramite cicli for degli array, ma davvero mi sfugge quale possa essere la risoluzione.. Avete qualche idea?
Vi ringrazio immensamente, manutosc.

8 Risposte

  • Re: Problema con file e stringhe

    Esiste un numero di righe massimo ?
  • Re: Problema con file e stringhe

    No, è casuale...
  • Re: Problema con file e stringhe

    Ci sono diverse cose da fare.

    Iniziamo con la piu' intelligente: la struttura dati Bag e' una struttura dati che si comporta come un Set, cioe' un insieme, in cui gli elementi sono presenti un'unica volta, ma in piu' tiene traccia di quante volte l'elemento e' stato inserito nel Bag.

    Come Set, {1,2,3,2,1} e' UGUALE a {1,2,3} ma anche a {3,2,1} (e qualunque altra permutazione)
    Come Bag, {1,2,3,2,1} e' UGUALE a { 1:2, 2:2, 3:1 } ('1' e' presente DUE volte, '2' e' presente DUE volte, '3' e' presente UNA volta), o a qualunque permutazione di 1,2,3.

    Come si implementa un Bag: dai e' semplice!

    Ora, quello che devi fare e' leggere il file RIGA x RIGA, assicurarti che la riga non contenga spazi in testo o in coda, e nemmeno il ritorno a capo (CR/LF oppure LF/CR, oppure CR oppure LF a seconda se sei in Windows, Linux, Mac, Solaris, ... ogni bischero di sistema operativo ha il suo modo di indicare l'a capo)

    Anche questo e' facile, se usi gli std::stream del C++.

    Ed e' meglio che usi le STL e la stringa C++ e NON del C: std::string.
  • Re: Problema con file e stringhe

    Ma tu lavori in C o C++? Che conoscenze hai? Cosa puoi adottare nei tuoi programmi?
  • Re: Problema con file e stringhe

    C++, ho conoscenze di base, posso applicare stringhe con relative funzioni e operazioni, vettori, file, qualsiasi cosa che non sia di un livello troppo elevato....
  • Re: Problema con file e stringhe

    Dato che non sai quante stringhe devi leggere, come vorresti allocare il vettore ?
  • Re: Problema con file e stringhe

    Eh appunto, avevo pensato di aprire inizialmente il file per contare quante righe (e quindi nomi) ci sono, oppure una volta per vedere la grandezza del vettore di cui ho bisogno.. Ma davvero non riesco a capire come fare.
    Provando con le stringhe e con lo strcmp avevo provato a comparare due stringhe dopo aver inserito i nomi in due di esse, ma così facendo non riesco a confrontarle tutte...
  • Re: Problema con file e stringhe

    Inizialmente conta le stringhe e alloca un vettore di stringhe di dimensioni opportune avendo cura di allocare anche un vettore parallelo di interi per contare le occorrenze (ovviamente azzerato).

    Poi rileggi il file e leggi una stringa per volta.

    Cerca il nome letto e

    1) se lo trovi, aumenta il contatore delle occorrenze con indice corrispondente
    2) se non lo trovi, aggiungi il nome alla fine del vettore di stringhe

    Queste indicazioni ti possono bastare per iniziare a scrivere il codice.
Devi accedere o registrarti per scrivere nel forum
8 risposte