Array e Stringhe in C++
Gestisci collezioni di dati e manipola testi in modo efficiente
In C++ gli array e le stringhe rappresentano due concetti fondamentali per gestire collezioni di dati e manipolare testi.
Array in C++
📌 Caratteristiche principali:
Struttura dati statica che memorizza una sequenza di elementi dello stesso tipo con dimensione fissa.
1.1 Definizione e Utilizzo
// Sintassi di dichiarazione
tipo nomeArray[dimensione];
// Esempi pratici
int numeri[5]; // Dichiarazione
int numeri[5] = {1, 2, 3, 4, 5}; // Dichiarazione con inizializzazione
1.2 Utilizzo Pratico
#include <iostream>
using namespace std;
int main() {
int numeri[5] = {10, 20, 30, 40, 50};
// Stampa tutti gli elementi dell’array
for (int i = 0; i < 5; i++) {
cout << “Elemento in posizione ” << i << ” : ” << numeri[i] << endl;
}
return 0;
}
Spiegazione:
- L’array
numericontiene 5 interi - Il ciclo
foritera da 0 a 4 (5 elementi) e stampa ciascun valore - Gli indici degli array partono sempre da 0
1.3 Esercizi Pratici con Array
Esercizio 1: Calcolare la Media degli Elementi
#include <iostream>
using namespace std;
int main() {
int numeri[5] = {10, 20, 30, 40, 50};
int somma = 0;
int dimensione = 5;
for (int i = 0; i < dimensione; i++) {
somma += numeri[i];
}
double media = static_cast<double>(somma) / dimensione;
cout << “La media degli elementi è: ” << media << endl;
return 0;
}
Esercizio 2: Inversione di un Array
#include <iostream>
using namespace std;
int main() {
int numeri[6] = {1, 2, 3, 4, 5, 6};
int dimensione = 6;
// Inversione dell’array
for (int i = 0; i < dimensione / 2; i++) {
int temp = numeri[i];
numeri[i] = numeri[dimensione – 1 – i];
numeri[dimensione – 1 – i] = temp;
}
// Stampa dell’array invertito
cout << “Array invertito: “;
for (int i = 0; i < dimensione; i++) {
cout << numeri[i] << ” “;
}
cout << endl;
return 0;
}
Spiegazione:
- Il ciclo inverte gli elementi scambiando il primo con l’ultimo, il secondo con il penultimo, ecc.
- L’operazione di swap utilizza una variabile temporanea
temp
Stringhe in C++
📌 Vantaggi di std::string:
Gestione dinamica, metodi integrati, concatenazione semplice e dimensioni automatiche.
2.1 Manipolazione con <string>
Metodi principali:
length() o size()substr(pos, len)find(sottostringa)+==2.2 Utilizzo Pratico delle Stringhe
#include <iostream>
#include <string>
using namespace std;
int main() {
string saluto = “Ciao”;
string mondo = ” mondo!”;
// Concatenazione
string frase = saluto + mondo;
cout << “Frase: ” << frase << endl;
// Lunghezza della stringa
cout << “Lunghezza della frase: ” << frase.length() << endl;
// Estrazione di una sottostringa
string sottostringa = frase.substr(0, 4); // “Ciao”
cout << “Sottostringa: ” << sottostringa << endl;
// Ricerca di una parola
size_t pos = frase.find(“mondo”);
if (pos != string::npos) {
cout << “‘mondo’ trovato in posizione: ” << pos << endl;
} else {
cout << “‘mondo’ non trovato.” << endl;
}
return 0;
}
Spiegazione:
- Le operazioni di concatenazione e ricerca rendono la manipolazione delle stringhe molto più intuitiva
string::nposindica che la sottostringa non è stata trovata- I metodi semplificano notevolmente le operazioni comuni sui testi
2.3 Esercizi Pratici con Stringhe
Esercizio 1: Inversione di una Stringa
#include <iostream>
#include <string>
using namespace std;
int main() {
string input;
cout << “Inserisci una stringa: “;
getline(cin, input);
string inversa = “”;
// Costruzione della stringa inversa
for (int i = input.length() – 1; i >= 0; i–) {
inversa += input[i];
}
cout << “Stringa invertita: ” << inversa << endl;
return 0;
}
Esercizio 2: Contare le Vocali in una Stringa
#include <iostream>
#include <string>
using namespace std;
int main() {
string testo;
cout << “Inserisci una stringa: “;
getline(cin, testo);
int contatoreVocali = 0;
// Lista di vocali sia minuscole che maiuscole
string vocali = “aeiouAEIOU”;
for (int i = 0; i < testo.length(); i++) {
if (vocali.find(testo[i]) != string::npos) {
contatoreVocali++;
}
}
cout << “Numero di vocali nella stringa: ” << contatoreVocali << endl;
return 0;
}
Spiegazione:
- Il programma scorre ogni carattere della stringa
- Utilizza
findper verificare se il carattere è una vocale - Aggiorna il contatore quando trova una vocale
Confronto Array vs Stringhe
Array
Caratteristiche:
- Dimensione fissa
- Memoria contigua
- Accesso diretto agli elementi
- Performance elevate
int numeri[5] = {1,2,3,4,5};
Stringhe
Caratteristiche:
- Dimensione dinamica
- Metodi integrati
- Gestione automatica memoria
- Facile manipolazione
string testo = "Ciao Mondo";
Esercizi Avanzati
Esercizio 3: Ricerca Elemento in Array
#include <iostream>
using namespace std;
int main() {
int numeri[8] = {45, 12, 67, 89, 34, 23, 90, 56};
int cerca;
bool trovato = false;
cout << “Inserisci il numero da cercare: “;
cin >> cerca;
for (int i = 0; i < 8; i++) {
if (numeri[i] == cerca) {
cout << “Numero trovato in posizione: ” << i << endl;
trovato = true;
break;
}
}
if (!trovato) {
cout << “Numero non trovato nell’array.” << endl;
}
return 0;
}
Esercizio 4: Conta Parole in una Stringa
#include <iostream>
#include <string>
using namespace std;
int main() {
string frase;
cout << “Inserisci una frase: “;
getline(cin, frase);
int contatoreParole = 0;
bool inParola = false;
for (int i = 0; i < frase.length(); i++) {
if (frase[i] != ‘ ‘ && !inParola) {
contatoreParole++;
inParola = true;
} else if (frase[i] == ‘ ‘) {
inParola = false;
}
}
cout << “Numero di parole nella frase: ” << contatoreParole << endl;
return 0;
}
Conclusioni
Riassunto pratico:
- Permettono di memorizzare dati dello stesso tipo in strutture a dimensione fissa
- Utili per operazioni come somma, inversione o ricerca di elementi
<string>- La classe
std::stringoffre gestione dinamica e metodi semplificati - Facili da concatenare, analizzare e modificare grazie ai metodi integrati
Gli esempi ed esercizi pratici illustrati ti aiuteranno a comprendere come lavorare con array e stringhe in C++, permettendoti di sviluppare applicazioni più complesse e dinamiche. Buon coding! 🚀
🚀 Esercitazioni Pratiche C++
Metti in pratica ciò che hai imparato con queste esercitazioni complete
📚 Tutte le Esercitazioni
12 esercitazioni complete per padroneggiare il C++