Corso di Programmazione 1 Dott.ssa Chiara Petrioli/Dott. Ivano Salvo/ Dott. Michele Mastrogiovanni Homework 2 consegna: 6/11/2005 Anno Accademico 2006-07 Esercizio 1 Due array A e B di uguale lunghezza n sono identici se hanno gli stessi elementi nelle stesse posizioni. Quindi l’array {1, 1, 3} è identico all’array {1, 1, 3}, ma non all’array {1, 3, 1} Scrivere un programma che verifica se due array di interi sono identici. INPUT: numero n degli elementi dei due array e successivamente i 2n interi elementi dei due array OUTPUT: 1 sei due array sono identici, 0 altrimenti. Esercizio 2 Due array A e B, di lunghezza rispettivamente n e m sono simili se contengono gli stessi elementi. Attenzione che l’array {1, 1, 3} è simile all’array {1, 3, 1}, ma anche all’array {3, 3, 3, 1}, ma non all’array {1, 2, 3} Scrivere un programma che verifica se due array di interi sono simili. INPUT: numero n degli elementi del primo array, successivamente i suoi n, poi la lunghezza m del secondo array e successivamente i suoi m elementi. OUTPUT: 1 sei due array sono simili, 0 altrimenti. Esercizio 3 Dati due array A e B di uguale lunghezza, A è permutazione di B, se contiene esattamente gli stessi elementi B, non necessariamente nelle stesse posizioni (eventuali elementi ripetuti devono avere lo stesso numero di occorrenze in entrambi gli array). Attenzione quindi che l’array {1, 1, 3} è permutazione dell’array {1, 3, 1}, ma non dell’array {3, 3, 1}. Scrivere un programma che verifica se due array di interi sono tra loro permutazioni. INPUT: numero n degli elementi dei due array e successivamente i 2n elementi gli elementi dei due array OUTPUT: 1 sei due array sono uno la permutazione dell’altro e 0 altrimenti. 1 Esercizio 4 (Crivello di Eratostene) I numeri primi si definiscono in matematica come quei numeri naturali che sono divisibili solo per 1 e per se stessi. Esiste un antichissimo metodo (forse uno dei primi algoritmi di cui si abbia conoscenza) per generare tutti i numeri primi da 1 ad n, noto come Crivello di Eratostene, che risale al III secolo avanti Cristo: si scrivono tutti i numeri naturali da 1 a n. Si comincia da 2 e si cancellano tutti i suoi multipli (4,6,8,10, ...). Si prende il prossimo numero non cancellato, il 3, e si cancellano tutti i suoi multipli (6,9,12,15, ...). A questo punto il primo numero non cancellato è il 5 e si cancellano i suoi multipli, e cosı̀ via. Alla fine, seguendo questo procedimento, i numeri non cancellati sono tutti i numeri primi tra 1 e n. (quando ci si pu fermare?). Voi dovrete semplicemente scrivere un programma che legge un intero n e produce la tabella dei numeri primi da 1 a n. [Suggerimento usare un array (dimensione massima 1000), inizializzare tutti i suoi elementi a 1; poi applicare l’algortimo di Eratostene, dove cancellare il numero i, significa porre a 0 l’i-esimo elemento dell’array. Stampare l’indice degli elementi dell’array rimasti uguali a 1]. Esercizio 5 (Triangolo di Tartaglia) Ricordiamo al lettore il triangolo di Tartaglia1 : 1 1 1 1 1 1 ... 1 2 1 3 3 1 4 6 4 1 5 10 10 5 1 Osservate che l’elemento k-esimo di una riga si ottiene sommando gli elementi k − 1 e k della riga precedente (supporre che i numeri sopra scritti siano circondati da zeri!). Scrivere un programma che ricevuto in input un numero naturale n, stampa in output l’n-esima riga del triangolo di Tartaglia. Considerare la riga che contiene solo 1 come la 0-esima, quella con 11 la prima e cosı̀ via. 1 chiamato di Pascal in Francia e di Newton in Inghilterra. 2