· Andrea Pollini · informatica · 3 min read

Esercizio svolto C++: Conteggio parole in una stringa

Esercizio svolto C++ per contare il numero di parole in una stringa. Scopri come implementare un programma in C++ per contare le parole in una stringa.

Esercizio svolto C++ per contare il numero di parole in una stringa. Scopri come implementare un programma in C++ per contare le parole in una stringa.

Esercizio

Scrivere un programma in C++ che conta il numero di parole in una stringa. Il programma deve leggere una stringa da input e restituire il numero di parole presenti nella stringa. SCrivere inoltre una funzione che stampi a video il numero di occorrenze di ogni carattere dell’alfabeto presenti nella stringa.

Teoria Necessaria

Prima di immergerci nel codice, è utile comprendere alcuni concetti di base:

  1. Stringhe in C++: In C++, una stringa è una sequenza di caratteri. Può essere gestita come array di caratteri (char[]) o usando la classe std::string.
  2. Loop: I cicli for e while sono essenziali per iterare su ogni carattere di una stringa.
  3. Array: Utilizzeremo un array per contare le occorrenze di ciascun carattere dell’alfabeto.

Funzione per Contare le Occorrenze di un Carattere

Iniziamo con la funzione che conta le occorrenze di un carattere specifico in una stringa.

#include <iostream>
#include <string>
// Funzione che conta le occorrenze di un carattere in una stringa
int contaCarattere(const std::string& str, char carattere) {
int conteggio = 0;
for (char c : str) {
if (c == carattere) {
conteggio++;
}
}
return conteggio;
}

Spiegazione del Codice

  1. Definizione della Funzione: La funzione contaCarattere prende in input una stringa (const std::string& str) e un carattere (char carattere).
  2. Conteggio Iniziale: Inizializziamo un contatore (conteggio) a zero.
  3. Loop sulla Stringa: Utilizziamo un loop for per iterare su ogni carattere della stringa.
  4. Confronto dei Caratteri: Ogni carattere della stringa viene confrontato con il carattere di interesse. Se sono uguali, incrementiamo il contatore.
  5. Restituzione del Conteggio: Alla fine, la funzione restituisce il numero di occorrenze del carattere.

Funzione per Contare le Occorrenze di Tutti i Caratteri dell’Alfabeto

Ora scriveremo una funzione che conta le occorrenze di ogni carattere dell’alfabeto in una stringa.

#include <iostream>
#include <string>
#include <vector>
// Funzione che conta le occorrenze di tutti i caratteri dell'alfabeto in una stringa
std::vector<int> contaTuttiCaratteri(const std::string& str) {
std::vector<int> conteggi(26, 0);
for (char c : str) {
if (isalpha(c)) {
c = tolower(c);
conteggi[c - 'a']++;
}
}
return conteggi;
}
// Funzione per stampare i risultati
void stampaConteggi(const std::vector<int>& conteggi) {
for (int i = 0; i < 26; i++) {
std::cout << char('a' + i) << ": " << conteggi[i] << std::endl;
}
}

Spiegazione del Codice

  1. Definizione della Funzione: La funzione contaTuttiCaratteri prende in input una stringa (const std::string& str).
  2. Array di Conteggio: Inizializziamo un array (std::vector<int> conteggi) di 26 elementi a zero, uno per ogni lettera dell’alfabeto.
  3. Loop sulla Stringa: Iteriamo su ogni carattere della stringa.
  4. Verifica del Carattere: Utilizziamo isalpha per verificare se il carattere è una lettera e tolower per convertirlo in minuscolo.
  5. Incremento del Conteggio: Incrementiamo il contatore appropriato sottraendo 'a' dal carattere.
  6. Funzione di Stampa: La funzione stampaConteggi stampa il risultato per ogni lettera dell’alfabeto.

Programma di Test

Ora scriveremo un programma di test che verifica le funzioni sopra definite e permette all’utente di inserire i dati.

#include <iostream>
#include <string>
#include <vector>
// Prototipi delle funzioni
int contaCarattere(const std::string& str, char carattere);
std::vector<int> contaTuttiCaratteri(const std::string& str);
void stampaConteggi(const std::vector<int>& conteggi);
int main() {
std::string input;
char carattere;
// Input da parte dell'utente
std::cout << "Inserisci una stringa: ";
std::getline(std::cin, input);
std::cout << "Inserisci un carattere da contare: ";
std::cin >> carattere;
// Chiamata alla funzione contaCarattere
int conteggio = contaCarattere(input, carattere);
std::cout << "Il carattere '" << carattere << "' appare " << conteggio << " volte nella stringa." << std::endl;
// Chiamata alla funzione contaTuttiCaratteri
std::vector<int> conteggi = contaTuttiCaratteri(input);
stampaConteggi(conteggi);
return 0;
}

Spiegazione del Codice

  1. Prototipi delle Funzioni: Dichiarazione dei prototipi delle funzioni.
  2. Input dell’Utente: Lettura della stringa e del carattere da contare.
  3. Chiamata a contaCarattere: Calcola e stampa il numero di occorrenze del carattere specificato.
  4. Chiamata a contaTuttiCaratteri: Calcola e stampa il numero di occorrenze di ciascun carattere dell’alfabeto.
    Back to Blog

    Related Posts

    View All Posts »
    Struct in C++

    Struct in C++

    Le struct rappresentano un elemento fondamentale del linguaggio C++, offrendo un modo flessibile e strutturato per gestire dati complessi. La loro semplicità d'uso e i numerosi vantaggi le rendono uno strumento prezioso per qualsiasi programmatore C++.