Lab 06: Programmazione - Preparazione al compitino del 23 novembre 2016 ======================================================================= Nota: della classe String dovete conoscere i metodi: - char charAt(int index) - boolean equals(String s) - boolean equalsIgnoreCase(String s) - boolean contains(String s) - int indexOf(int ch) - int indexOf(int ch, int fromIndex) - int length() - String substring(int beginIndex) - String substring(int beginIndex, int endIndex) ____________________________________________________________________ 1. Assumete che x e y siano variabili int e che il loro valore prima di ciascuno dei seguenti assegnamenti sia rispettivamente 19 e 6. Assumete che z sia una variabile double. Dite quale sara` il loro valore dopo gli assegnamenti indicati: Assegnamento x y z x=y∗y+1 y=2+x++ x=y∗3−x x−=y∗y ____________________________________________________________________ 1.b z=x/y z=y/x z=--x/y z=(double)(x/y) z=(double)x/y ____________________________________________________________________ 2. Scrivete un programma che legga una sequenza di interi, terminata dall'intero -1, e stampi quanti sono gli interi che hanno due cifre di cui la prima e` un 5. Ad esempio: Intero: 1003 Intero: 52 Intero: 315 Intero: 21 Intero: -1 1 ____________________________________________________________________ 2.b. Scrivete un programma che legga una sequenza di interi, terminata dall'intero -1, e stampi quanti sono gli interi che hanno due cifre di cui la seconda e` un 5. Ad esempio: Intero: 1003 Intero: 52 Intero: 315 Intero: 25 Intero: -1 1 ____________________________________________________________________ 3. Scrivete un programma che legga ripetutamente delle stringhe contenenti un certo numero di ∗ e un solo carattere /. Dovete, per ognuna di esse, stampare 1 o 0 a seconda che nella parte dopo la / compaia qualche ∗ oppure no. Il programma termina quando viene inserita la stringa vuota. Non e` necessario che controlliate che l'utente abbia inserito una stringa nella forma corretta. Ad esempio: Stringa: a*a**aa/badfdd 0 Stringa: a*/adva*avva*** 1 Stringa: a/b 0 Stringa: a*/*b 1 Stringa: ***/ 0 Stringa: ____________________________________________________________________ 3b. Scrivete un programma che legga ripetutamente delle stringhe contenenti almeno un ∗. Dovete stampare, solo per quelle che dopo l'asterisco (il primo, se ce n'e` piu' di uno) contengono il simbolo :, la parte successiva a *. Il programma termina quando viene inserita la stringa vuota. Non e` necessario che controlliate che l'utente abbia inserito una stringa nella forma corretta. Ad esempio: Stringa: cinema*lunedi 20:10 lunedi 20:10 Stringa: seminario*aula 3 Stringa: palestra*martedi 18:30 martedi 18:30 Stringa: ____________________________________________________________________ 4. Scrivete un programma che dato in input un valore intero n dispari disegni la forma indicata (n e` il numero di asterischi sulla prima riga). Intero: 9 ********* ****.**** ***...*** **.....** *.......* ____________________________________________________________________ 4b. Scrivete un programma che dato in input un valore intero n disegni la forma indicata (n e` il numero di asterischi sulla prima riga). Intero: 5 ***** ****. ***.. **... *.... ..... ____________________________________________________________________ 5. Considerate il seguente programma Java Scanner in = new Scanner(System.in); int x, y, z; x = in.nextInt(); y = in.nextInt(); z = 0 ; while ( x > 0 ) { z+=y; x−−; } out.println(z); • Cosa stampa il programma quando x = 5 e y = 13? ......................................... • Cosa stampa il programma quando x = 0 e y = 30? ......................................... ____________________________________________________________________ 6. Scrivete un programma che legga una stringa e la ristampi sostituendo a ogni carattere il numero di occorrenze complessive di quel carattere nella stringa. Ad esempio, se la stringa fosse "cartamusica" il programma dovrebbe stampare "23113111123". (Infatti la 'c' e` ripetuta 2 volte, la 'a' e` ripetuta 3 volte, tutte le altre lettere sono ripetute 1 volta). Ad esempio: Stringa: carcassa 23123223 ____________________________________________________________________ 6b. Scrivete un programma che legge due stringhe di cifre e calcola la somma dei prodotti tra le cifre, dopo aver stampato, per ogni coppia di cifre, le cifre stesse e il loro prodotto. Ad esempio, per 234 e 5678, il programma deve calcolare 2*4 + 2*5 + 2*7 + 2*8 + 3*5 + 3*6 + ...... Scrivi due numeri interi separati da uno spazio 234 56 2*5 = 10 2*6 = 12 3*5 = 15 3*6 = 18 4*5 = 20 4*6 = 24 99 ____________________________________________________________________ 7. Scrivete un programma che legga un certo numero di interi (al massimo 100), terminati dall'intero -1, e che alla fine ristampi la cifra delle unita` di ciascuno. Ad esempio: Intero: 134 Intero: 12 Intero: 432 Intero: 34134 Intero: 22 Intero: 33 Intero: 451 Intero: -1 4224231 ____________________________________________________________________ 7b. Scrivete un programma che legga un certo numero di stringhe (al massimo 100), terminate dalla stringa "stop", e che alla fine ristampi l'ultimo carattere di ciascuna. Ad esempio: Stringa: per Stringa: piu Stringa: meno Stringa: test Stringa: uguale Stringa: stop ruote ____________________________________________________________________ 7c. Scrivete un programma che legga un certo numero di interi tra 0 e 10 (al massimo 100), terminati dall'intero -1, e che alla fine stampi il numero di occorrenze di ciascun numero. ____________________________________________________________________ 8. Scrivete un metodo statico di nome f che, data come argomento una stringa, restituisca come risultato la sua prima meta` (arrotondata per difetto se la stringa ha lunghezza dispari). Ad esempio, se la stringa e` "ciao" il metodo deve restituire "ci", mentre se la stringa e` "ritardo" deve restituire "rit". Il metodo non deve stampare nulla. ____________________________________________________________________ 8b. Scrivete un metodo statico di nome somma_unita_decine che dato come argomento un numero intero, restituisca la somma della cifra delle unita` e della cifra delle decine. Ad esempio, se il numero e` 1623, il metodo deve restituire 5 (la somma di 3 e 2). Il metodo non deve stampare nulla. ____________________________________________________________________ 9. Scrivete un metodo statico di nome salta che data una stringa x e dato un intero r, restituisca la stringa ottenuta prendendo un carattere ogni r (a partire dal primo). Ad esempio salta ("tartassare", 3) deve restituire "ttsr", mentre salta ("barzelletta", 2) deve restituire "brelta". ____________________________________________________________________ 9b. Scrivete un metodo statico di nome cesare che data una stringa s e un intero r, restituisca la stringa ottenuta prendendo, per ogni carattere c della stringa, in carattere r posizioni piu' avanti nell'alfabeto, considerando la a come carattere successivo alla z. Ad esempio cesare("zebra", 3) deve restituire "cheud".