0 a N−1) e contiene un valore dello stesso tipo degli altri.
arr[0] è all'indirizzo 1000, per un array di int (4 byte) arr[1] sarà a 1004, arr[2] a 1008, ecc.
// clicca una cella per evidenziarla
std::vector.
// ① Dichiarazione senza inizializzazione (valori indeterminati) int arr[5]; // ② Dichiarazione + inizializzazione con lista int arr[5] = {8, 6, 9, 7, 5}; // ③ Dimensione dedotta automaticamente dal compilatore int arr[] = {8, 6, 9, 7, 5}; // dim = 5 // ④ Inizializzazione a zero (primo=0, resto azzerato) int arr[5] = {0}; // {0,0,0,0,0} // ⑤ Con costante per la dimensione (buona pratica!) const int N = 5; int arr[N]; // ⑥ Array di float, char, double... float temperature[12] = {0.0f}; char lettere[] = {'a', 'b', 'c'};
arr[5] su un array di 5 elementi (arr[0..4]) non genera un errore a runtime — produce un comportamento indefinito (undefined behavior). Controllare sempre gli indici!
for che itera da 0 a N-1, leggendo ogni elemento con cin. La stessa struttura si usa per la stampa con cout.
#include <iostream> using namespace std; int main() { const int N = 5; int arr[N]; // Popolamento: leggo N valori da tastiera for (int i = 0; i < N; i++) { cout << "Inserisci elemento [" << i << "]: "; cin >> arr[i]; } // Stampa tutti gli elementi cout << "Array: "; for (int i = 0; i < N; i++) cout << arr[i] << " "; cout << endl; // Ricerca del massimo int max = arr[0]; for (int i = 1; i < N; i++) if (arr[i] > max) max = arr[i]; cout << "Massimo: " << max << endl; return 0; }
N-1 passate l'array è ordinato.
#include <iostream> using namespace std; // Funzione che ordina arr[] di n elementi (crescente) void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { // Dopo la passata i, gli ultimi i elementi sono già a posto for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { // Scambio con variabile temporanea int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } } } int main() { int arr[] = {64, 34, 25, 12, 22}; int n = sizeof(arr) / sizeof(arr[0]); bubbleSort(arr, n); cout << "Ordinato: "; for (int i = 0; i < n; i++) cout << arr[i] << " "; return 0; }
i-esima passata, gli ultimi i elementi sono già nel posto giusto — non serve confrontarli di nuovo. Questo riduce il numero di confronti inutili.
tmp. Senza tmp uno dei due valori andrebbe perso.
int arr[5], qual è l'indice dell'ultimo elemento?n−i−1 invece di n−1?arr[j] e arr[j+1] ho scritto:arr[j] = arr[j+1]; arr[j+1] = arr[j];