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