· Andrea Pollini · programmazione · 2 min read

7 Esercizi intermedi C++ su funzioni, array, matrici e stringhe

7 Esercizi intermedi C++ su funzioni, array, matrici e stringhe

7 Esercizi intermedi C++ su funzioni, array, matrici e stringhe

Ecco un elenco di esercizi su funzioni, array, matrici e stringhe, dedicato per chi sta studiando C++ e vuole iniziare ad affrontare problemi piú complessi di quelli che si trovano spesso online (che sono quasi sempre copia di esercizi di altri siti).

1 - Mappe e altitudini

Ci é stato fornito una mappa delle altezze del suolo di una porzione di Marte di lato 20 metri. La risoluzione… vedi tutto

2 - Visita Marte

Su Marte, la sonda Curiosity ha una posizione…vai a Visita Marte

3 - Macchina quasi di turing

Creare un simulatore per una macchina quasituring. La macchina ha una memoria…vai a Macchina quasi di turing

4 - Inversione parole in una stringa

manipoliamo una stringa invertendo le parole che la compongono.

Data in input una stringa (letta con la funzione std::getline()) contenente una serie di parole separate da uno spazio, scrivere una funzione che restituisca una stringa contenente la stessa serie di parole ma con le parole in ordine inverso.

Soluzione

Per la soluzione utilizziamo un vettore di stringhe e andiamo ad inserire le varie parole all’inizio del vettore, in modo tale da averle poi giá in ordine inverso.

#include <iostream>
#include <string>
#include <vector>

std::string inverti_parole(const std::string&);

int main() {
  std::string s;

  std::cout << "s = ";
  //std::cin >> s;
  std::getline(std::cin,s);
  auto stringa_invertita = inverti_parole(s);
  //s = inverti_parole(s);
  std::cout << stringa_invertita << "\n";
  
  std::cout << "\nbye.\n";
}

std::vector<std::string> get_parole(const std::string& str) {
  std::vector<std::string> p;
  std::string parola;
  for(auto i = 0; i < str.size(); i++) {
    if(str[i] == ' ' ) {
      //p.push_back(parola); // aggiungo la parola al vettore;
      p.insert(p.begin(),parola);
      parola.clear();
    } else {
      parola.push_back(str[i]);
    }
  }
p.insert(p.begin(),parola);
  return p;
}

std::string inverti_parole(const std::string& str){
  std::vector<std::string> parole = get_parole(str);

  for(auto parola:parole) {
    std::cout << parola << "\n";
  }

  std::string out;
  for(auto i = 0; i< parole.size(); i++) {
    out += parole[i];
    if (i != parole.size() -1) {
      out += " ";
    }
  }
  
  // spezzare la stringa
  return out;
}

5 - Titolizzazione di una stringa

Data in input una stringa (letta con la funzione std::getline()) contenente una serie di parole separate da uno spazio, restituire tutte le parole con solo il primo carattere maiuscolo e tutto il resto minuscolo.

6 - Conversione stringa da binario a esadecimale

Assegnata una stringa contenente un numero binario (es. 10101), restituire la rappresentazione esadecimale della stessa.

7 - Conversione stringa da binario a decimale

Assenata una stringa contenente un numero binario (es. 10101), restituire la rappresentazione decimale della stessa.

Back to Blog

Related Posts

View All Posts »
50 Esercizi sul costrutto if/if..else/elif

50 Esercizi sul costrutto if/if..else/elif

Ecco una lista di 50 esercizi sul costrutto condizionale `if`, `if..else` e `elif` in C. Questi esercizi ti aiuteranno a capire come funzionano i costrutti condizionali e a scrivere algoritmi che fanno uso di essi. Prova a risolvere questi esercizi da solo e controlla le soluzioni per verificare la tua comprensione.