Esercizi Algoritmi e programmazione (ARRAY)

Prof. Pagani Corrado
ALGORITMI – ESERCITAZIONI ARRAY
ESERCIZI ARRAY – 1
1.
2.
3.
Dato un vettore composto da 10 numeri interi
(assegnati direttamente da codice o letti da
tastiera) determinare somma e media.
Dato un vettore composto da 8 numeri interi
(assegnati direttamente da codice o letti da
tastiera) determinare il valore massimo e minimo.
Dato un vettore composto da 10 numeri interi
sommare i numeri pari in posizione (indice) pari
con i numeri dispari in posizione (indice) dispari.
ESERCIZI ARRAY – 2
4.
5.
6.
Data una parola letta come sequenza di
caratteri, stamparla in output trasformando i
caratteri minuscoli in maiuscoli.
Data una parola letta come sequenza di
caratteri alfabetici scrivere in output solo le
vocali e successivamente solo le consonanti
Dato un testo letto come sequenza di
caratteri, riscrivere in output il testo stesso
eliminando tutti i caratteri non alfabetici
ESERCIZI ARRAY – 3
7.
8.
Nei vettori A e B, ciascuno di N elementi, sono
memorizzate due parole di N caratteri ciascuna,
un carattere per ogni elemento di vettore.
Verificare se le due parole sono uguali ed in caso
contrario determinare quale delle due parole
precede l'altra nell'ordine alfabetico.
Nei vettori A e B, ciascuno di N elementi, sono
memorizzate due parole di N caratteri ciascuna.
Stampare in output una parola di 2*N caratteri
che alterni ad ciascun carattere della prima
parola il corrispondente carattere della seconda
ESERCIZI STRINGHE – ARRAY DI CARATTERI
1.
2.
3.
Date tre stringhe concatenarle togliendo il
carattere finale dalle stringhe con un numero di
caratteri dispari ed il carattere iniziale dalle
stringhe con un numero di caratteri pari; infine
rendere maiuscola la stringa ottenuta dalla
concatenazione.
Date tre stringhe, se il numero di caratteri totale
delle tre stringhe è pari concatenarle in ordine
alfabetico altrimenti in ordine alfabetico inverso.
Data una stringa, se il numero di caratteri è
dispari togliere il carattere centrale, altrimenti se
è pari tenere solo la prima metà dei caratteri.
ESERCIZI STRINGHE – ARRAY DI CARATTERI – 2
4.
5.
6.
Date 4 stringhe determinare il prodotto del numero di
caratteri di tutte le 4 stringhe moltiplicato per 50.
Date due stringhe se hanno entrambe un numero di
caratteri pari o entrambe dispari dividere il numero di
caratteri della prima per il numero di caratteri della
seconda, altrimenti dividere il numero di caratteri della
seconda per il numero di caratteri della prima.
Data una stringa scritta in minuscolo se il numero di
caratteri che la compongono è pari riscriverla in output
con il primo e l’ultimo carattere in maiuscolo, altrimenti
scrivere in maiuscolo tutti i caratteri tranne il primo e
l’ultimo..
SIMULAZIONE VERIFICA (SVOLTA IN CLASSE)




Dato un intero ed un vettore di interi determinare se il numero
è presente nel vettore e quante volte compare
Dati 2 numeri, stampare tutti i numeri pari compresi in ordine
crescente e tutti i numeri dispari compresi in ordine
decrescente. Infine salvare i numeri in questo ordine in un
vettore.
Dato un numero intero (letto in una variabile intera!)
determinare da quante cifre è composto
Eliminare tutti gli spazi da una stringa di testo letta in input
leggendo i caratteri con un ciclo che li legga uno alla volta


Strategia1: utilizzo un doppio ciclo e quando trovo uno spazio traslo
tutti i caratteri successivi indietro di una posizione
Strategia2 (+ semplice): ricopio i caratteri della stringa di input in un
altra stringa vuota saltando i caratteri SPAZIO (ricordarsi di inserire il
terminatore al termine nella seconda stringa che ho costruito)
SIMULAZIONE VERIFICA (PER CASA)




Dati due vettori composti da n interi creare due vettori: il
primo contenente per ciascuna posizione i il valore massimo
tra i due vettori ed il secondo contenente per ciascuna
posizione i il valore minimo.
Dato un vettore di interi determinare quante volte il numero
memorizzato è divisibile per la sua posizione (il numero in
prima posizione deve essere divisibile per uno, quello in
seconda posizione divisibile per 2 etc….)
Data una stringa estrarre in altre 2 stringhe tutti i caratteri
numerici e nella seconda tutti i caratteri alfabetici maiuscoli
Date due stringhe se la prima precede la seconda in ordine
alfabetico prendere la concatenazione della prima metà della
prima stringa con la seconda metà della seconda stringa,
altrimenti concatenare la prima metà della seconda stringa
con la seconda metà della prima stringa
ESERCITAZIONE TRIS – CON MATRICI (1)
Il gioco del TRIS è modellabile con una matrice 3x3
1. 1^ versione
1.
2.
2.
Per ogni casella estraggo uno dei 2 simboli
PROBLEMI  Potrei avere un numero di simboli non
equilibrato
2^ versione
1.
2.
3.
Controllo che siano inseriti 4 o 5 valori per ciascuno dei due
simboli
Se ho raggiunto 5 inserimenti per uno dei due simboli smetto
di estrarre e inserisco i simboli mancanti tutti dell’altro tipo
PROBLEMI  La distribuzione potrebbe non essere uniforme,
infatti nelle ultime caselle potrebbe esserci un simbolo
ricorrente
ESERCITAZIONE TRIS – CON MATRICI (2)
Posso integrare, durante l’inserimento il test di
vincita e interrompere l’inserimento dei simboli
successivi
3. 3^ versione
1.
2.
Estraggo solo la metà delle volte ed inserisco il
simbolo estratto e successivamente quello non
estratto
PROBLEMI  La distribuzione è sempre non
uniforme, infatti in certe caselle (ad esempio nelle
prime 2 della prima riga) non potranno mai esserci
due simboli identici
ESERCITAZIONE TRIS – CON MATRICI (3)
4.
4^ versione
1.
2.
3.
4.
Tengo traccia di quanti siano i simboli ancora da
inserire (all’inizio 9)
Estraggo (solo all’inizio) per determinare quale sia il
simbolo che si inserisce per primo
Per ogni inserimento estraggo un numero (k nel
seguito) pari alle posizioni mancanti da inserire e
scorro la matrice inserendo alternativamente i
simboli nella k-esima posizione
PROBLEMI  Sembra corretto, ma gioca il computer
contro se stesso procedendo a caso
ESERCITAZIONE TRIS – CON MATRICI (4)
4.
5^ versione
1.
2.
3.
5.
Faccio giocare l’umano
Il computer gioca come prima, quando tocca all’umano
faccio scegliere la posizione di inserimento mostrando la
situazione attuale
PROBLEMI  è facile sconfiggere la macchina !
6^ versione (livello LEGEND)
1.
2.
Quando inserisco il simbolo per la macchina, prima di
estrarre la posizione, verifico se c’è una posizione che la
faccia vincere e nel caso la sfrutto
Potrebbe essere utile fissare i valori inseriti in matrice in
modo da determinare la situazione della singola riga
semplicemente dalla somma