LABORATORIO DI PROGRAMMAZIONE DI STRUTTURE DATI
ESERCIZI DI RIPASSO
20 Febbraio 2002

Classi e oggetti

  1. Create una classe Complex per effettuare operazioni matematiche su numeri complessi. Quindi scrivete un programma per testare la vostra classe.
    I numeri complessi hanno questa forma:

    parteReale + i * parteImmaginaria
    dove i è l'unità immaginaria, ovvero quel numero che moltiplicato per se stesso fornisce -1.
    Rappresentate i dati della classe tramite variabili in virgola mobile. Fornite un costruttore che inizializzi ogni oggetto della classe, ed un costruttore predefinito. Fornite dei metodi public per ciascuna delle seguenti operazioni:
    • addizione di due numeri complessi;
    • sottrazione di due nuemri complessi;
    • prodotto di due numeri complessi;
    • modulo di un numero complesso;
    • visualizzazione di un numero complesso nella forma a + i b, dove a è la parte reale, b è la parte immaginaria e i è l'unità immaginaria.
  2. Definite una classe Paese che memorizzi il nome di un paese, la sua popolazione e la sua area. Utilizzando questa classe, scrivete un programma che legga un insieme di paesi e stampi:
    • il paese con l'area più grande;
    • il paese con la popolazione più numerosa;
    • il paese con la minore densità abitativa.
    Riflettete attentamente sul problema che dovete risolvere. Di quali metodi avrete bisogno? Quindi progettate la classe e implementate i metodi. Poi scrivete il programma.

Array

  1. Utilizzate un array unidimensionale per risolvere questo problema: leggete 20 numeri compresi tra 10 e 100. Per ogni numero letto, visualizzatelo solo se esso non è già stato immesso in precedenza.
  2. Scrivere i seguenti metodi:
    • public static boolean equals(int[] a, int[] b)
      che verifichi se due array contengono gli stessi elementi, nello stesso ordine.
    • public static boolean sameSet(int[] a, int[] b)
      che verifichi se due array contengono gli stessi elementi, ignorando le molteplicità e l'ordine (probabilmente avrete bisogno di uno o più metodi di supporto).
    Scrivere quindi un metodo main per testare i due metodi implementati.
  3. Implementate un algoritmo per eliminare tutti i duplicati da un array. Per esempio, l'array
        4  7  11  4  9  5  11  7  3  5
    dovrebbe essere modificato in
       4  7  11  9  5  3
    Suggerimento
    • Un semplice algoritmo: esaminate a[i] e contate quante volte ricorre nell'array a; se il conteggio è maggiore di uno toglietelo.
    • Un algoritmo più efficiente: ordinate l'array, quindi per ciascuno dei suoi elementi, esaminate il suo vicino per vedere se è presente più di una volta; in caso positivo toglietelo.

Classi, oggetti, array

  1. Si vogliono gestire alcune informazioni relative a partite di calcio.
    • si definisca una classe giocatore, con variabili di istanza nome, ruolo, numero, squadra
    • si definisca una classe goal, con variabili di istanza marcatore, minuto, autogoal (booleano)
    • si definisca una classe partita, con variabili di istanza squadra di casa, squadra ospite, arbitro e tabellino, che sara' un array di goal
    • si definiscano i metodi per la classe partita che restituiscono, rispettivamente, il risultato finale e la squadra vincitrice (si utilizzino dei metodi ausiliari se lo si ritiene opportuno)
    • si creino degli oggetti di esempio per testare i metodi definiti