Esercizi di Informatica per la classe terza 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) Un Parcheggio applica le seguenti tariffe Prima ora Dalla seconda alla sesta ora, ogni ora Dalla sesta ora in poi, ogni ora 0,80 Euro 0,50 Euro 0,30 Euro Conoscendo l’ora di entrata e l’ora di uscita (nell’arco dello stesso giorno), definire un programma che consenta di calcolare il costo del parcheggio. Date le coordinate cartesiane di 2 punti A, B, quale dei due punti è più vicino all’origine degli assi? Dato un punto P di coordinate (X, Y), indicare se appartiene ad uno degli assi, se non appartiene agli assi indicare in quale quadrante è posizionato. Dati il coefficiente angolare e il termine noto di una retta (M e Q) e dato un punto P di coordinate (X, Y), dire se il punto appartiene alla retta. Date le coordinate di un punto del piano cartesiano, e una retta di equazione aX+bY+c=0, verificare che il punto dato appartiene o meno alla retta. Date le coordinate cartesiane di 3 punti A, B, C, quale dei segmenti (AB, AC, BC) e più lungo? Date le coordinate cartesiane A(XA, YA), B(XB, YB), trovare l’area e il perimetro del rettangolo che ha come vertici opposti i punti A e B; si controlli che XA<XB e YA>YB. Inserite le coordinate del centro e il raggio di 2 circonferenze, dire se sono esterne, tangenti o secanti Dato un numero intero N effettuare la somma delle cifre che lo compongono (es. 2651 -- > 14). Dato un numero intero N (1<=N<=50), visualizzare una riga di N asterischi, se il numero N non è compreso fa 1 e 50 visualizzare un opportuno messaggio. Sapendo che un albero cresce, ogni anno del 20% dell’altezza dell’anno precedente e che l’altezza iniziale è di 100 cm: a) Visualizzare per N anni (con N fornito dall’utente) l’altezza, anno per anno dell’albero b) Calcolare e stampare il numero di anni che occorrono perché l’altezza raddoppi. Definire un programma che richieda all’utente di inserire la misura delle altezze di un gruppo di persone; dopo l’inserimento di ogni misura si deve chiedere all’utente se vuole continuare o meno l’inserimento; al termine visualizzare il numero di misure inserite e il numero di persone che hanno una altezza compresa tra 1,65 e 1,75 metri. Dato il seguente programma, effettuare un tracciato di esecuzione supponendo che M = 50, cosa verrà visualizzato su video? int main() { int M,A,S,K; cin>>M; A = 1; K = 0; S = A; do { K = K + 1; A = 2*A + 1; S = S + A; } while (S<=M); cout<<K<<" "<<S<<" "<<A<<endl; } 14) Dati gli orari (ore e minuti) di partenza e di arrivo di un treno, da due stazioni dello stesso giorno, calcolare la durata del viaggio. e nell'ambito 15) Dati i coefficienti dell'equazione di una retta (ax+by+c=0) dire se la retta è parallela ad uno degli assi, passa per l'origine oppure interseca gli assi. 16) Date le coordinate di tre punti del piano cartesiano, si calcolino le distanze dei tre punti dall'origine e si stampino le coordinate del punto più vicino all'origine. 17) Generalizzare l'esercizio precedente (n. 3), supponendo che la sequenza di coordinate da inserire sia terminata dalla coppia (0,0). 18) 19) 20) Utilizzando, per esempio, il carattere X, disegnare sul video un rettangolo di 10 righe ed 25 colonne contenenti il carattere suddetto, partendo da una posizione di riga e colonna scelta dall'utente. Calcolare la potenza di un numero reale, introdotto dall’utente. In un parcheggio si pagano L 2000 per la prima ora, L 1000 per ogni ora successiva fino alla quinta ora compresa, L 500 fino alle ore 24. Costruire un algoritmo che richieda l'immissione dell'ora di arrivo e dell'ora di uscita dal parcheggio e visualizzi il tempo di parcheggio e la relativa spesa. Inoltre a fine giornata (quando l'ora d'arrivo immessa è 0) visualizzi, il numero di automobili che hanno parcheggiato e l'incasso totale. 21) Una stazione metereologica rileva per una intera settimana, per ogni ora del giorno, la temperatura del luogo. A fine settimana per un utente deve essere possibile: a) Visualizzare le temperature di una intera giornata, indicata dall'utente stesso, con i valori massimi e minimi e le ore in cui sono stati rilevati, visualizzare inoltre la temperatura media della giornata; b) Visualizzare per ciascuna delle ore la temperatura media relativa all'intera settimana; 22) Un ente deve organizzare i dati relativi alle nascite avvenute per ciascun mese del 1999 nelle 20 regioni italiane. Su tali dati (che si suppongono già inseriti in ordine alfabetico di regione) per un utente deve essere possibile: a) b) c) d) visualizzare il numero di nati, per ciascun mese, di una regione indicata dall'utente stesso; visualizzare il numero di nati, per ciascuna regione, in un mese indicato dall'utente stesso; trovare e visualizzare il numero maggiore di nascite; trovare le regioni in cui si è avuto il numero maggiore di nascite e visualizzarle insieme al mese in cui ciò si è verificato; e) Calcolare la somma delle nascite di ogni regione; f) Visualizzare i dati secondo il seguente prospetto: Abruzzo Basilicata ….. Gen 140 .. … Feb 130 .. .. Mar 141 . .. Apr 151 … .. Mag 130 Giu 151 Lug 120 . . … Ago 80 Set 151 Ott 126 Nov 123 Dic 100 23) Copiare in un array monodimensionale i nomi delle regioni il cui totale delle nascite è maggiore di 20.000 e visualizzare l’array ottenuto; 24) Costruire un programma che permetta di acquisire due valori interi e l'operazione (+, -, *, /) che si intende fare. Visualizzare, nel caso l'operazione sia fattibile, il risultato. 25) Acquisita dall'esterno una sequenza di valori interi positivi, terminata dal valore 0, dire quanti valori sono stati introdotti e quanti di questi cadono nell'intervallo [100, 999]. 26) Data una stringa contenente delle parole separate da un unico spazio bianco, estrarre tutte le parole e inserirle in un vettore di stringhe. Visualizzare poi, il numero di parole, l'elenco delle parole stesse con la rispettiva lunghezza e la lunghezza media delle parole. 27) Dati due vettori ordinati di interi (ciascuno senza duplicazioni) rispettivamente di dimensione 512 e 1024, costruire un terzo vettore che contenga gli elementi in comune. Visualizzare il vettore così ottenuto se contiene elementi o visualizzare un messaggio opportuno. Si cerchi, possibilmente una soluzione "efficiente" in termini di velocità. 28) Calcolare il seno di un angolo utilizzando l'espansione : sen(x) = x - x^3/(3*2*1) + x^5/(5*4*3*2*1) - x^7/(7*6*5*4*3*2*1) .... L'algoritmo risolutore deve poter ricevere in ingresso il valore dell'angolo, per il quale e' richiesto il calcolo, espresso in radianti e deve stampare il valore dell'angolo, il valore del seno dell'angolo e il numero di termini sommati per effettuare il calcolo, stabilendo di non prendere in considerazione quantità in valore assoluto inferiori a 10^-9. Tot 1543 29) 30) 31) 32) Dato un vettore V[1..230] di valori reali, non ordinato, si vuole conoscere la posizione in cui andrà l'elemento V[1] dopo l'ordinamento, senza ordinare il vettore e scandendo il vettore stesso una sola volta. Utilizzando, per esempio, il carattere X, disegnare sul video un rettangolo di 10 righe ed 25 colonne contenenti il carattere suddetto, partendo da una posizione di riga e colonna scelta dall'utente. Dato un numero intero N>0 effettuare la somma delle cifre che lo compongono, se tale somma e' maggiore di 9, effettuare la somma delle cifre del numero ottenuto e cosi' via, fino a quando la somma di tali cifre non risulta inferiore a 9. Date le due successioni: S: an+1 = 4/3 * an + 1 33) 34) 35) 36) 37) 38) 39) 40) e W: bn+1 = 5/4 * bn + 1 con a0 = 1 e b0 = 1, e dato un numero NMAX > 1, quale fra le somme parziali delle due successioni raggiunge o supera per prima il valore NMAX ? Definire un programma che permetta di riempire un vettore di N elementi interi (con N scelto dall'utente), con valori, generati a caso nell'intervallo [-200..200] tutti diversi fra loro. Data una stringa, costruire due stringhe una con i caratteri di posto dispari ed una con i caratteri di posto pari. Scrivere un programma che riceve tre numeri interi in ingresso e determina se può esistere un triangolo avente i lati della lunghezza dei tre numeri dati. Esempio: Se i dati in ingresso sono: x=10, y=7, z=8; può esistere un triangolo avente i tre lati di lunghezza 10, 7 e 8 Se i dati in ingresso sono: x=10, y=6, z=3; non può esistere un triangolo avente i tre lati di lunghezza 10, 6 e 3 Scrivere un programma che riceve in input le coordinate cartesiane dei due vertici opposti di un rettangolo e determina la lunghezza dei lati e l'area del rettangolo. Esempio: Se i dati di input sono x1=3, y1=4, x2=6, y2=8 I dati di output sono lato1=3, lato2=4, area=12 Se i dati di input sono x1=-3, y1=4, x2=2, y2=8 I dati di output sono lato1=5, lato2=4, area=20 Scrivere un programma che riceve in input le coordinate cartesiane dei due vertici opposti di due rettangoli e determina se tali rettangoli sono sovrapposti o disgiunti Esempio: Se i dati di input sono rett1_x1=3, rett1_y1=4, rett1_x2=6, rett1_y2=8 rett2_x1=0, rett2_y1=0, rett2_x2=5, rett2_y2=5 L'informazione in uscita deve indicare che i due rettangoli sono sovrapposti Se i dati di input sono rett1_x1=3, rett1_y1=4, rett1_x2=6, rett1_y2=8 rett2_x1=-1, rett2_y1=-2, rett2_x2=2, rett2_y2=1 L'informazione in uscita deve indicare che i due rettangoli non sono sovrapposti Scrivere un programma che legge una sequenza di 10 interi e - li memorizza in un array A, - ne calcola il quadrato di ciascuno e lo memorizza nella posizione di indice corrispondente in un array B, - ne calcola analogamente il cubo, memorizzandolo in una array C - visualizza il contenuto di b e di c Si consideri una sequenza di 15 interi, scrivere un programma che - li memorizza in un array A, - trovi l’elemento massimo (o minimo). Siano assegnati in ingresso la quantità e gli elementi di un array di interi. Si scriva un programma che dopo aver riempito l’array, fornisca il numero di elementi dispari presenti nell’array. Esempio: INPUT 8 22 13 15 23 50 15 52 5 OUTPUT Nell’array sono presenti 5 elementi dispari 41) Siano assegnati in ingresso la quantità e gli elementi di un array di interi. Si scriva un programma che dopo aver letto l’array, copi in altri due array i valori pari ed i valori dispari presenti. Si forniscano in uscita gli array ottenuti, stampando per primo il vettore con numero minore di elementi. Esempio: INPUT 8 22 13 15 23 50 15 52 5 OUTPUT Pari 22 50 52 Dispari 13 15 23 15 5 42) Siano dati in ingresso la quantità e gli elementi di un array di interi; sia dato, inoltre, un ulteriore valore intero K. Scrivere un programma che ordini l’array in senso crescente, stampi l’array ordinato, inserisca K nell’array mantenendo l’ordinamento ed infine stampi l’array così modificato. Esempio: INPUT 8 2 10 8 7 6 13 1 4 (elementi dell’array) 9 (valore di K) OUTPUT L’array ordinato e’: 1 2 4 6 7 8 10 13 L’array ordinato dopo l’inserimento e’: 1 2 4 6 7 8 9 10 13 43) Siano dati in ingresso la quantità e gli elementi valori di un array di interi; sia dato, inoltre, un ulteriore valore intero K. Scrivere un programma che stampi i primi due elementi dell’array maggiori di K, se esistenti, o un opportuno messaggio nel caso contrario. Esempio: INPUT (1) 8 2 10 8 7 6 13 11 4 (elementi dell’array) 9 (valore di K) OUTPUT (1) I primi due elementi maggiori di 9 sono: 10 13 INPUT (2) 8 2 10 8 7 6 13 11 4 (elementi dell’array) 12 (valore di K) OUTPUT (2) Non ci sono due elementi maggiori di 12 44) Siano dati in ingresso la quantità e gli elementi valori di un array di interi; sia dato, inoltre, un ulteriore valore intero K. Scrivere un programma che verifichi se esiste una terna di elementi consecutivi la cui somma sia maggiore di K e, in caso positivo, ne stampi i valori. Stampi un opportuno messaggio nel caso contrario. Esempio: INPUT (1) 8 2 9 8 7 6 13 11 4 (elementi dell’array) 25 (valore di K) OUTPUT (1) Terna trovata: 7 6 13 INPUT (2) 8 2 9 8 7 6 13 11 4 (elementi dell’array) 50 (valore di K) OUTPUT (2) Terna non trovata 45) Siano dati in ingresso la quantità e gli elementi valori di un array di interi; sia dato, inoltre, un ulteriore valore K, verificare se K compare nell’array o meno. Esempio: INPUT 5 13 9 8 17 6 (elementi dell’array) 17 (valore di K) OUTPUT Trovato 46) Siano dati in ingresso la quantità e gli elementi valori di un array di interi; sia dato, inoltre, un ulteriore valore K, trovare il numero di occorrenze di K nell’array. Esempio: INPUT 7 8 9 17 8 8 17 6 (elementi dell’array) 8(valore di K) OUTPUT Il valore 8 compare 3 volte 47) Siano dati in ingresso la quantità e gli elementi valori di un array A di interi, creare un nuovo array di interi ottenuto da A sostituendo ogni numero negativo con 0. Esempio: INPUT 6 8 -9 -37 18 -5 17 6 (elementi dell’array) OUTPUT 8 0 0 18 0 17 6 (elementi dell’array risultante) Esercizi sulle stringhe e sui caratteri 48) Inserire delle stringhe formate da sequenze di caratteri A e B, contare il numero di stringhe lunghe 8 caratteri e che contengono la sottostringa AAA, l’inserimento termina quando l’utente inserisce una stringa formata da un asterisco (‘*’). 49) Inserita una stringa, se la sua lunghezza è inferiore a 20 caratteri, aggiungere in fondo gli asterischi che servono per portare la lunghezza della stringa a 20. 50) Inserita una stringa se è di lunghezza pari (>2) estrarre e visualizzare i due caratteri centrali, se è di lunghezza dispari (>3) estrarre e visualizzare i tre caratteri centrali.