Vettore di stringhe

di Anonimizzato8034 il
5 risposte
Salve a tutti e spero mi diate una dritta con questo semplice esercizio che vi scrivo

dato un testo di dimensioni random passato da input, e data una parola chiave anch'essa passata da input devo far indicare al programma quante volte compare la parola.

Devo però realizzarlo con il vettore dinamico ovvero classe vector senza utilizzare il comando getline

Ho provato diverse volte ma non riesco a fare in modo che ogni parola immessa da testo venga memorizzata in un vettore come se fossero delle stringhe a se stanti in modo da poterle poi confrontare con la parola chiave....

Dove sbaglio?

Grazie

5 Risposte

  • Come esegui la lettura dei dati? in codice intendo.
  • È proprio quello il problema, e mi spiego

    ipotizzando di voler passare la frase mio tuo suo

    se uso cin al primo spazio mi fermo e non va bene

    se uso getline mi legge tutta la riga ma anche usandolo come vettore non riesco a fargli capire che sarebbero 3 elementi ovvero mio tuo suo

    il mio intento era usare ogni sottostringa come fosse l'elemento di un vettore per poi usarli nuovamente
  • 
    #include <iostream>
    #include <iomanip>
    #include <vector>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    
    
    int main()
    {
    	cout << "Inserisci stringa" << endl;
    	std::string str;
    	std::vector<std::string> vettore;
    	
    	while(cin.peek() != '\n')
    	{
    		cin >> str;
    		vettore.push_back(str);
    	}
    	cin.clear();
    	cout << "Inserisci stringa da cercare" << endl;
    	std::string trova;
    	cin >> trova;
    	int conta = std::count(vettore.begin(),vettore.end(),trova);
    
    	cout << "La stringa e stata trovata " << conta << " volte" << endl;
    
    	return 0;
    }
    
    dov'era la difficoltà?
  • La classe algorithme e la classe iomanip non le ho ancora studiate perchè sto seguendo un percorso con un prof e volevo un suggerimento ma ovviamente usando i mezzi che avevo a disposizione...

    Comunque grazie 1000 skynet vedrò di leggere il codice e capire cosa di preciso faccia
  • Invece di usare la funzione count potresti usare un iteratore che attraversa il vettore e fa il conteggio.
    
    std::vector<std::string>::iterator it;
    for(it = vettore.begin(); it != vettore.end(); ++it)
    { 
         if(trova == *it)
             conta++;
    }
    
Devi accedere o registrarti per scrivere nel forum
5 risposte