Lab08 Array
Lab08 Array
DI PROGRAMMAZIONE CON
LABORATORIO
ARRAY
7
Gli Array: Inizializzazione
I valori di un array non inizializzato sono non predicibili.
Un array può essere inizializzato direttamente durante la
dichiarazione:
int counters[5] = {1, 2, 3, 4, 5}
counters[0] == 1;
counters[1] == 2;
counters[2] == 3;
counters[3] == 4;
counters[4] == 5;
10
Gli Array Multidimensionali
Un array multidimensionale è un array i cui
elementi sono a loro volta di tipo array.
Accesso ad un elemento:
int value = matrix[5][3];
11
matrix[3][2] = 10;
Gli Array Multidimensionali
Anche gli array multidimensionali possono essere
inizializzati direttamente durante la dichiarazione.
Non è necessario specificare tutti gli elementi.
13
Esercizio 2
Scrivere un programma C che:
Richiede all’utente di inserire i vettori a e b di lunghezza 3:
scanf("%i,%i,%i", &a[0], &a[1], &a[2])
Richiede all’utente di scegliere un’operazione da eseguire su tali vettori:
+: somma tra due vettori
Il risultato è un vettore in cui ciascun elemento è la somma dei corrispondenti elementi nei
vettori di input.
-: differenza tra due vettori
Il risultato è un vettore in cui ciascun elemento è la differenza dei corrispondenti elementi nei
vettori di input.
*: prodotto elemento per elemento
Il risultato è un vettore in cui ciascun elemento è il prodotto dei corrispondenti elementi nei
vettori di input.
x: prodotto scalare
Il risultato è un numero ottenuto facendo la somma dei prodotti a[i] * b[i].
Esempi
(2, 3, 4) + (4, 5, 6) = (6, 8, 10)
(2, 3, 4) – (4, 5, 6) = (-2, -2, -2)
(2, 3, 4) * (4, 5, 6) = (8, 15, 24) 14
(2, 3, 4) x (4, 5, 6) = 2*4 + 3*5 + 4*6 = 47
Esercizio 3
Scrivere un programma C che richiede all’utente 10
voti (compresi tra 18 e 30). Per ogni voto da 18 a 30
stampa il numero delle sue occorrenze e individua i
voti che hanno più occorrenze.
15
Esercizio 4
Scrivere un programma C che salvi in ogni
elemento di un array bidimensionale il valore (i + j)
dove i è il numero di riga e j il numero di colonna.
Scegliete a piacere il numero di righe e colonne.
Finché l’utente vuole continuare, il programma
richiede all’utente i valori i e j e stampa il
corrispondente elemento a video, oppure un
messaggio di errore se gli indici non sono validi.
Esempio di esecuzione
Vuoi iniziare? (s/n) s
Riga: 2
Colonna: 3
Valore in (2,3): 5 16
Vuoi continuare? (s/n)
Esercizio 5
Scrivere un programma C che:
Richiede all’utente di inserire due matrici
quadrate 3x3.
for( i = 0; i < 3; i++ ){
scanf( "%i,%i,%i",
&a[i][0], &a[i][1], &a[i][2] );
}
Esegue la moltiplicazione tra le due matrici.
Date due matrici quadrate a e b, l’elemento c[i][j]
della matrice c risultato è dato dal prodotto scalare
della riga i di a per la colonna j di b.
Per il prodotto scalare si veda l'esercizio 2.
17
Stampa a video il risultato.
Esercizio 5 [Esempio]
Matrice a: Matrice b: Matrice c:
3 2 5 1 0 3 36 19 28
1 0 4 4 7 2 21 4 15
4 1 3 5 1 3 23 10 23
18
Esercizio 6
Scrivere un programma che dato un array di
caratteri lungo 8 (con i valori letti da standard
input) lo stampa, lo stampa invertito, sostituisce
ogni vocale minuscola con un '*'.
Per esempio se dopo la lettura l’array è
p i c c i o n e
19
Esercizio 7
(esercizio con array da tema di esame)
Scrivere un programma che dato un array di interi > 0
(sicuramente è così, non serve correggere errori)
inizializzato in fase di dichiarazione e che finisce con il
valore sentinella -1 (dichiarato come costante simbolica
STOP), verificare se l’array è in ordine:
1) Crescente
2) Decrescente
3) Nessun ordine
e stampare un opportuno messaggio. Ad esempio l’array
int values[] = {7, 4, 5, 4, 2, STOP}; non è in nessun ordine,
l’array int values[] = {7, 5, 3, 2, 1, STOP}; è in ordine
decrescente, mentre l’array int values[] = {1, 3, 4, 7, 9, 20
STOP}; è in ordine crescente.
Esercizio 8
(esercizio con array da tema di esame)
Scrivere un programma che dato un numero intero positivo
num inserito da tastiera (correggere eventuali errori in
inserimento) e un array di 5 interi di nome cifre
contenente tutti numeri maggiori o uguali a zero composti
da una sola cifra, verificare se tutte le cifre di num sono
presenti nell’array.
Ad esempio se num vale 353 e l’array è int cifre[]= {3, 3,0,
7, 4}, l’array non contiene tutte le cifre di num.
21
Esercizio 9
(esercizio con cicli da tema di esame)
Chiamiamo coppia di quadrati (CQ) una coppia <a,b> di
numeri interi che sono uno il quadrato dell’altro. Esempio
<9,3> oppure <-3,9> (infatti 9=3*3).
Si codifichi un programma C che legge da tastiera una
sequenza che termina con 99 (di lunghezza a priori
illimitata) di numeri interi e stampa a video quante coppie
di numeri consecutivi all’interno della sequenza
rappresentano una CQ.
Ad esempio: 2 4 16 0 3 9 99 contiene 3 CQ: <2,4> <4,16> e
<3,9>
22
Esercizio 10
Matermind
Scrivere un programma che realizzi il gioco Mastermind.
Il primo giocatore inserisce 4 caratteri che corrispondono
alle iniziali di 4 colori tra (r = rosso; g = giallo; v = verde, b
= blu, n = nero; si assuma che gli utenti inseriscano
sempre una lettera compresa in questo elenco).
Il secondo giocatore ha a disposizione 10 tentativi per
indovinare la combinazione, inserendo a sua volta quattro
caratteri ad ogni tentativo.
Dopo ogni tentativo il programma visualizza il numero di
colori corretti in posizione corretta (non vengono segnalati
i colori corretti in posizione sbagliata).
Terminati i tentativi, se il secondo giocatore non è riuscito
a indovinare la sequenza, vengono visualizzati i caratteri 23
corretti.
Esercizio 11
Massimo comun divisore e minimo
comune multiplo
24