Vai al contenuto

Gli array

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

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

#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

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

#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

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

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

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! πŸš€

Esercitazioni Pratiche C++

Metti in pratica ciΓ² che hai imparato con queste esercitazioni complete

Tutte le Esercitazioni

πŸ“Š Variabili e Tipi di Dato

βž• Operatori Matematici e Logici in C++

πŸ”€ Strutture di controllo condizionali

πŸ”„ I cicli in C++

πŸ—ƒοΈ C++ gli array

βš™οΈ Le funzioni in C++

πŸ“ˆ Ordinamento dei Dati

πŸ—οΈ Le struct in C++

🎯 I puntatori

🧩 La Programmazione Orientata agli Oggetti (OOP)

πŸ“ La gestione dei file in C++

πŸ’ͺ Esercizi C++ Raccolta Completa

12 esercitazioni complete per padroneggiare il C++