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.

1

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

C++

// 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

C++

#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 numeri contiene 5 interi
  • Il ciclo for itera 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

C++

#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

C++

#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

2

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()
Restituisce il numero di caratteri nella stringa
✂️
substr(pos, len)
Estrae una sottostringa dalla posizione specificata
🔍
find(sottostringa)
Cerca una sottostringa all’interno della stringa
Operatore +
Concatena due stringhe
⚖️
Operatore ==
Confronta due stringhe

2.2 Utilizzo Pratico delle Stringhe

C++

#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::npos indica 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

C++

#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

C++

#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 find per verificare se il carattere è una vocale
  • Aggiorna il contatore quando trova una vocale

3

Confronto Array vs Stringhe

A

Array

Caratteristiche:

  • Dimensione fissa
  • Memoria contigua
  • Accesso diretto agli elementi
  • Performance elevate
int numeri[5] = {1,2,3,4,5};
S

Stringhe

Caratteristiche:

  • Dimensione dinamica
  • Metodi integrati
  • Gestione automatica memoria
  • Facile manipolazione
string testo = "Ciao Mondo";

4

Esercizi Avanzati

Esercizio 3: Ricerca Elemento in Array

C++

#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

C++

#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;
}

5

Conclusioni

Riassunto pratico:

Array
  • Permettono di memorizzare dati dello stesso tipo in strutture a dimensione fissa
  • Utili per operazioni come somma, inversione o ricerca di elementi
Stringhe con <string>
  • La classe std::string offre 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! 🚀

Torna in alto