Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - contare le occorrenze  delle parole contenute in un file
Forum - C/C++ - contare le occorrenze delle parole contenute in un file

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 22:37
Martedì, 12/01/2010
Ciao a tutti,ho riscontrato un problemino nella programmazione con i file in c++,in pratica devo scrivere un programma che preso un file stampa le occorrenze di tutte le parole che lo compongono e posso usare la map.Mi è venuto in mente di prendere il file e copiarlo in una stringa così da far si che quando richiamerò la ricerca delle occorrenze il ciclosarà più veloce.Sapete consigliarmi come eseguire quest'ultimo passaggio?non sò come fare a stampare tt le occorrenze delle parole nella stringa aiutatemi vi prego!

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:48
Martedì, 12/01/2010
Perchè inserirlo in una stringa?

Mentre lo leggi dal file, controlli la parola e tieni conto delle occorrenze.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 22:49
Martedì, 12/01/2010
ma come si fà questo passaggio?e non è più veloce sulla ram piuttosto che su massa?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:59
Martedì, 12/01/2010
Il file lo devi comunque leggere una volta ...

Non sai come leggere un file di testo in C++ ?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 23:00
Martedì, 12/01/2010
si leggere lo sò leggere ma nn sò come contare quante volet si ripete ogni parola al suo interno

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 23:09
Martedì, 12/01/2010
Hai detto che puoi usare le map.

Usane una tipo

map<string, int> parole;


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 23:55
Martedì, 12/01/2010
oppure usa una multimap e ti fai restituire il numero di occorrenze di ogni parola usando il metodo "count", passandogli come parametro la key (cioè la parola stessa). Potrei farti un esempio di codice ma è così semplice che praticamente sarebbe come fare i compiti al posto tuo.

qui comunque c'è un esempio abbastanza chiaro:
http://www.cplusplus.com/reference/stl/multimap/count/

Ultima modifica effettuata da TheKaneB il 12/01/2010 alle 23:56
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:02
Mercoledì, 13/01/2010
Perchè una multimap ? In modo simile a quel sorgente, con una map

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <map>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.   string parola;
  11.   map<string, int> parole;
  12.        
  13.   fstream file("file.txt", ios::in);
  14.   while(file >> parola)
  15.     parole[parola]++;
  16.   file.close();
  17.  
  18.   map<string, int>::iterator prossparola;
  19.   for(prossparola=parole.begin(); prossparola!=parole.end(); prossparola++)
  20.     cout << (*prossparola).first << " => " << (*prossparola).second << endl;
  21.  
  22.   return 0;
  23. }



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 10:28
Mercoledì, 13/01/2010
Testo quotato

Postato originariamente da nessuno:

Perchè una multimap ? In modo simile a quel sorgente, con una map




Io lo so come usare una map, ci mancherebbe!
Ho soltanto proposto una soluzione in più che potrebbe rivelarsi utile per "scoprire" le multimap. Molti programmatori C++ che conosco si ricordano solo "per sentito dire" dell'esistenza di queste strutture, quindi mi sembra istruttivo iniziare fin da subito a conoscerle. Per questo esempio ovviamente è banale l'uso di una semplice map, ma se in futuro dovesse sviluppare qualcosa in cui sarà importante mantenere reference distinti per ciascuna istanza di oggetti identici (in questo caso, stringhe con uguale contenuto), allora probabilmente si ricorderà che un tale su un forum gli aveva fatto scoprire le multimap :)

Ultima modifica effettuata da TheKaneB il 13/01/2010 alle 10:29
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo