Array Un array è una collezione in sequenza di variabili del medesimo tipo Riferimento con un nome comune Nome_studente1 Nome_studente2. Nome_studenteN Studenti Nome_studente1 Nome_studente2 … … … Nome_studenteN Approccio 1: N variabili Approccio 2: 1 variabile
Array ad una dimensione Un array monodimensionale viene dichiarato come: data_type nome[dimensione]; Es: Un array di 5 numeri interi viene dichiarato: int prova[5]; num1num2num3num4num5 prova :
Accesso agli elementi E possibile accedere ad un singolo elemento di un array tramite un indice, che descrive la posizione dellelemento nellarray Gli indici in C++ partono da 0 num4 prova : prova[0] num3num5num2num1 prova[1]prova[2]prova[3]prova[4]
Inizializzazione (1) Per inizializzare una array devo fornire una lista di valori: int prova[5]={1, 87, 14, 27, 22 }; 27 prova : prova[0] prova[1]prova[2]prova[3]prova[4]
Inizializzazione (1) Posso lasciare al compilatore il compito di determinare la dimensione di un array int prova[]={1, 87, 14, 27, 22 }; 27 prova : prova[0] prova[1]prova[2]prova[3]prova[4]
Array a due e più dimensioni Posso definire array a più dimensioni allo stesso modo di quelli a 1. La posizione di un elemento è identificato da un indice per ogni dimensione Int array2D[3][4]
Array a due e più dimensioni int array2D[3][4]={ {1,1,1,1}, {2,2,2,2}, {3,3,3,3}, }; Indice
Ordinamento: bubble-sort Lidea è di far galleggiare il minimo dellarray nelle prima posizione Riduco la parte di array da considerare, escludendo le prime posizioni già ordinate
Ordinamento: bubble-sort 27 prova[0] prova[1]prova[2]prova[3]prova[4] Passo 1: parto dalla fine dellarray e scambio il valore di due elementi se quello con lindice più alto è minore dellaltro. 22 prova[0] prova[1]prova[2]prova[3]prova[4] 22 prova[0] prova[1] prova[2] prova[3] prova[4]
Ordinamento: bubble-sort 22 prova[0] prova[1]prova[2]prova[3]prova[4] Passo 2: riduco larray da considerare per lordinamento e ripeto il passo 1 22 prova[0] prova[1]prova[2]prova[3]prova[4] 87 prova[0] prova[1] prova[2] prova[3] prova[4]
// Bubble sort #include using namespace std; int main() { int nums[10]; int a,b,t,size; size=10; // Inizializza larray for(t=0; t<size; t++) nums[t] = rand(); // Ordinamento for(a=1; a<size; a++) for(b=size-1; b>=a; b--) { if (nums[b-1] > nums[b]) { t = nums[b-1]; nums[b-1] = nums[b]; nums[b] = t; } return 0; }
Limiti ed overflow Attenzione: in C++ non cè alcun controllo sulla dimensione dellarray! int prova[10]; int elemento; elemento=prova[21]; prova[100]=5; Posso scrivere senza generare errori cose come:
Stringhe Le stringhe sono array di caratteri, con un terminatore NULL (\0) alla fine. La dimensione di un array stringa deve essere di un elemento più lungo rispetto al numero di caratteri della stringa, per contenere il terminatore char str[11]; // è una stringa di 10 caratteri char str1=Questa è una stringa;
Lettura di una stringa da tastiera
Manipolazione di stringhe strcpy(orig,dest); copia la stringa orig nella stringa dest strcat(s1,s2); aggiunge la stringa s2 alla fine di s1 strcmp(s1,s2); confronta due stringhe e restituisce 0 se sono uguali strlen(s); restituisce la lunghezza della stringa s
Manipolazione di stringhe NOTA BENE: Quando si utilizzano le funzioni: strcpy, strcat, strcmp, strlen bisogna fare attenzione alle dimensioni!
Esercizio 1 Costruire una funzione che restituisca la lunghezza di una stringa senza utilizzare strlen()
Esercizio 2 Creare due funzioni che calcolino: perimetro di un triangolo dati i lati area di un triangolo dati base e altezza Utilizzarle allinterno di un programma main()