Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C++] Esercizio sull'utilizzo della classe Map

    ciao a tutti!

    Ho bisogno di scrivere un metodo in c++ (utilizzando la classe Map) che abbia come parametro di entrata un vettore di stringhe e che mi ritorni una mappa(STL) con il numero di volte che appare ogni stringa nel vettore.

    Esempio :

    Vettore v = {minni, pippo, pluto, pluto, minni, paperino, pluto}

    il metodo deve ritornare una mappa<String,int> così :

    - pair<minni,2>
    - pair<pippo,1>
    - pair<pluto,3>
    - pair<paperino,1>

    Spero di essermi spiegato
    So che non è un forum dove chiedere i compiti... solo che non so veramente dove mettere le mani. Spero nel vostro aiuto. Grazie in anticipo a chi cercherà di aiutarmi.

  2. #2
    devi giocare con le parole che sia .cpp o .h se vuoi programmare ad oggetti io ho un maRE di programmi in visual c.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da lilian75 Visualizza il messaggio
    devi giocare con le parole che sia .cpp o .h se vuoi programmare ad oggetti io ho un maRE di programmi in visual c.
    Ma che dici???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non hai neanche provato ad iniziare a scrivere il codice?
    Ultima modifica di oregon; 22-11-2015 a 08:02
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Si hai ragione scusami ho provato a scrivere questo :

    codice:
    map<string,int> aparicionesString(vector <string> & v){
    
        map<string,int> n;
        std::map<string,int>::iterator it;
    
        for (int j = 0; j<v.size(); j++){
    
            map<string,int> temp;
            temp = n.find(v[j]);
            int count=0;
            if (temp.empty()){
                count++;
                pair<string, int> elem1 = {v[j],count};
                n.insert(elem1);
            }
            else
    ma è incompleto e sbagliato... per di più non ho ancora ben capito la differenza tra le funzioni find e count per la ricerca in una mappa...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    find cerca un elemento
    count restituisce il numero di elementi cercati

    La differenza è semplice. Il primo metodo restituisce un elemento cercato se viene trovato. Il secondo restituisce il numero di elementi cercati.

    Ma perché cercare in una mappa? Ti richiede di cercare e contare nel vector ...
    Ultima modifica di oregon; 22-11-2015 a 13:02
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    perché la mia idea era :

    ricercare la stringa del vettore nella mappa:
    ----> se non c'è immettere la coppia di valori e inizializzare un contatore a 1;
    ----> se c'è incrementare solo il contatore;

    tutto questo forse con una mappa/vettore ausiliario temp?? ho azzardato questa ipotesi ma non ne sono sicuro

    potrebbe farmi comodo quindi count? find restituisce un booleano? ricerca solo gli elementi associati ad una chiave o posso cercare anche solo una chiave della mappa?
    Ultima modifica di aleRomatre; 22-11-2015 a 13:22

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da aleRomatre Visualizza il messaggio
    perché la mia idea era :

    ricercare la stringa del vettore nella mappa:
    ----> se non c'è immettere la coppia di valori e inizializzare un contatore a 1;
    ----> se c'è incrementare solo il contatore;
    Corretto ... ma non serve nulla di temporaneo ...

    find restituisce il puntatore all'elemento della mappa che cerchi ...

    Ti basta poco nel ciclo for ...

    codice:
    		it = n.find(v[j]);
    		if (it != n.end()) 
    			it->second++;
    		else
    			n.insert(pair<string, int>(v[j], 1));
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    quando scrivi :

    codice:
      if (it != n.end())
    la chiamata n.end() implica che l'iteratore it scorra le chiavi della mappa dall'inizio alla fine?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Si intende controllare che l'iteratore sia o meno alla fine e capirai bene che vuol dire nei due casi...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.