Array monodimensionali
- #c++
- #programmazione
- #array
- #array monodimensionali
In questa lezione
- 1. Descrizione
- 2. Dichiarazione
- 3. Dimensione Array
- 4. Operazioni
- 4.1 Accesso elemento
- 4.2 Lettura elemento
- 4.3 Scrittura elemento
- 4.4 Cosa NON si può fare
- 4.5 Soluzione a questi problemi
- 5. Algoritmi principali
- 5.1 Stampa Array
- 5.2 Leggi Array
- 5.3 Ordinamento Array (Bubble Sort)
- 5.4 Ricerca Massimo/Minimo
- 6. Esercizi
- 6.1 Esercizio
- 6.2 Esercizio
- Quiz a risposta multipla
1. Descrizione
Un array monodimensionale (o vettore) è una sequenza di variabili dello stesso tipo che vengono situate consecutivamente nella memoria ed alle quali è possibile accedere usando uno stesso nome (identificatore) a cui viene aggiunto un indice. Pensiamo all’array come ad un insieme di cassetti numerati.
Definizione: Sequenza di elementi () tutti di tipo individuati singolarmente da un numero intero int fra 0 e (detto indice).

2. Dichiarazione
dove:
- → identificatore (nome);
- → tipo;
- → costante intera, dimensione;
#define N 10
const int M = 100
//dichiara ad esempio un array di 10 elementi
int A[N];
//dichiara un array di 10 elementi float
float V[10];
//dichiara un array di 100 elementi
int B[M];
//array di interi con la dimensione definita implicitamente
int C[] = {3,5,6,2,1}
//array di interi parzialmente inizializzato
int D[10] = {3,5,6,2,1}
//array di interi totalmente inizializzato
int E[10] = {3,5,6,2,1,8,4,7,9,0}
//si può anche indicare {} inizializza gli elementi dell'array a zero
int F[N] = {0};
3. Dimensione Array
- Numero elementi predefinito → array statici = dimensione array costante (nota a compile-time)
- Numero elementi specificato a run-time → array semidinamici = dimensione array qualsiasi (intera)
- Numero elementi non specificato → array dinamici
Nota
Per gli array statici e semidinamici, una volta allocata, la dimensione dell’array non è più modificabile.
4. Operazioni
4.1 Accesso elemento
int vett[5] = {2, 0, 1, 6, 3};
vett[4]; // -> mi riferisco al valore 3
4.2 Lettura elemento
int vett[5];
cin >> vett[2]; // inserisco un valore nella posizione 3
4.3 Scrittura elemento
int vett[5] = {2, 0, 1, 6, 3};
cout << vett[2]; //Output: 1

4.4 Cosa NON si può fare
-
NO confronto e assegnamento
int A[10]; int B[10]; A == B; // ----> ERRORE A = B; // ----> ERRORE -
NO I/O su array
int A[10]; cout << A; // ----> ERRORE cin >> A; // ----> ERRORE
4.5 Soluzione a questi problemi
per eseguire correttamente operazioni di confronto, assegnamento ed I/O è spesso necessario utilizzare dei cicli.
-
Confronto e assegnamento:
esempio:
A[i] == B[j]esempio:
A[i] = 5 -
I/O su array:
esempio:
cin >> A[3]esempio:
cout << A[i]
5. Algoritmi principali
5.1 Stampa Array
int vett[5] = {2, 0, 1, 6, 3};
for (int i=0; i<5; i++) {
cout << vett[i] << " ";
}
// Output: 2 0 1 6 3
5.2 Leggi Array
int vett[5];
for (int i=0; i<5; i++) {
cin >> vett[i];
}
5.3 Ordinamento Array (Bubble Sort)

int dim = 5;
int vett[] = {2, 0, 1, 6, 3};
for (int i = 0; i < dim; i++) {
for (int j = 0; j < dim-1; j++) {
if (vett[j] > vett[j+1]) {
int temp = vett[j];
vett[j] = vett[j+1];
vett[j+1] = temp;
}
}
}
Ragionamento per “swappare” gli elementi di un array tra di loro:

5.4 Ricerca Massimo/Minimo
vett[5] = {2, 5, 1, 0, 3};
int max = vett[0];
for (int i=0; i<5; i++) {
if (max < vett[i]) {
max = vett[i];
}
}
cout << max;
// Output: 5

6. Esercizi
6.1 Esercizio
Leggere un array di interi di 10 posizioni e verificare se è palindromo (ovvero se non cambia ad essere letto dalla prima cella all’ultima o viceversa).
Esempio Output: inserisci 10 valori: 3 5 7 9 1 1 9 7 5 3 l’array e’ palindromo
💡 Mostra soluzione
#include <iostream>
using namespace std;
int main() {
int a[10];
cout << "inserisci 10 valori: ";
for (int i=0; i<10; i++) {
cin >> a[i];
}
bool palindromo = true;
for(int i=0; i<5; i++) {
if(a[i] != a[9-i]) {
palindromo = false;
}
}
if(palindromo) {
cout << "l'array e' palindromo";
}
else {
cout << "l'array NON e' palindromo";
}
}6.2 Esercizio
Leggere un array di 10 interi e stampare solo i numeri che appaiono nell’array una volta soltanto.
Esempio Output: inserisci 10 numeri interi: 1 3 5 3 2 0 5 2 3 4 1 0 4
💡 Mostra soluzione
#include <iostream>
using namespace std;
int main(){
int a[10];
//memorizzo l'array
cout << "inserisci 10 numeri interi: ";
for(int i=0; i<10; i++) {
cin >> a[i];
}
//per ogni numero dell'array
for(int i=0;i<10;i++) {
// voglio contare quante volte appare a[i]
int volte=0;
//controllo quante volte compare a[i]
for(int j=0; j<10; j++) {
if(a[j] == a[i]) {
volte++;
}
}
if(volte == 1) {
cout << a[i] << " ";
}
}
return 0;
}Quiz a risposta multipla
Mettiti alla prova
0/5 risposte
Cos'è un array monodimensionale?
Come si dichiara un array di 10 interi?
3) Se dichiariamo un array come int arr[5] = {1, 2, 3};, quale sarà il valore di arr[4]?
4) Quale delle seguenti operazioni non è valida su un array?
5) Se tentiamo di accedere a un elemento al di fuori dei limiti di un array, cosa succede?