Esercizi classi e array Raffaella Brighi, a.a. 2006/07 Corso di Algoritmi e programmazione. A.A. 2006-07 CdL Operatore Informatico Giuridico. Progetto DataSet Realizzare una classe DataSet per la gestione di un insieme di numeri interi. La classe fornisce i seguenti servizi: add per aggiungere un valore getmedia per restituire la media getmax per restituire il massimo printall: stampa in output tutti i dati inseriti dall utente. suggerimento: memorizzare i dati in un array Realizzare un programma client che chieda all utente di inserire un numero (stop per terminare), consentendo l inserimento di un massimo di 50 numeri. Al termine il programma stampa media, massimo ed elenco di tutti i numeri inseriti.
public class Dataset { private int numero, count, tot, max; private double media; final int NUMERI_LENGTH = 50; private int[] numeri = new int [NUMERI_LENGTH]; /** Crea una nuova istanza della classe Datase */ public Dataset() { numero = 0; count=0; public void addvalue(int fnumero) { numeri [count]= fnumero; tot = tot + fnumero; count++; if (count==1 fnumero>max) max=fnumero; public int gettot(){ return tot; public double getaverage(){ media = (double)tot/count; return media; public int getmax(){ return max; public void printall() { for (int i=0; i<count; i++){ System.out.println(numeri[i]); import java.util.*; public class DatasetClient { public static void main(string[] args){ int num, count=0; String risp; int numins; Dataset calcolo = new Dataset(); System.out.println ("Inserire il numero:"); Scanner in = new Scanner (System.in); risp = in.nextline(); while ((!risp.equals("stop")) count>calcolo.numeri_length) { numins = Integer.parseInt(risp); calcolo.addvalue(numins); count++; System.out.println ("Inserire il numero:"); risp = in.nextline(); System.out.println("Il numero più grande è:" + calcolo.getmax()); System.out.println("La media è:" + calcolo.getaverage()); calcolo.printall();
Progetto Fattura Progettare e realizzare una classe Fattura. Ogni fattura fornisce i seguenti servizi getintestario: restituisce l intestatario della fattura. aggiungiprodotto: consente di registrare la vendita di un prodotto. gettotale: restituisce il totale da pagare elencaprodotti: restituisce una stringa con nome, prezzo e quantità di ogni prodotto acquistato. Suggerimento: la stringa deve essere costruita mano a mano che i prodotti vengono aggiunti. Realizzare un programma client che dopo aver letto i dati del cliente, simula l acquisto di prodotti chiedendo all utente di inserire nome, prezzo e quantità del prodotto. Al termine delle operazioni di inserimento il programma stampa la fattura: intestatario elenco prodotti totale Nota: realizzare anche la classe Prodotto e la classe Persona. public class Prodotto { private String nome; private double prezzo; private int qta; /** Creates a new instance of Prodotto */ public Prodotto(String fnome,double fprezzo,int fqta) { nome = fnome; prezzo = fprezzo; qta = fqta; public String getvenduto(){ return nome; public double getprezzo(){ return prezzo; public int getqta(){ return qta;
public class Persona { private String nome; private String cognome; private String cf; /** Creates a new instance of Persona */ public Persona(String fnome,string fcognome,string fcf) { nome = fnome; cognome = fcognome; cf = fcf; public String getnome(){ return nome; public String tostring(){ String descrizione; descrizione = nome+cognome+cf; return descrizione; ublic class Fattura { private String elenco = ""; private Persona cliente; private Prodotto bene; private double totale =0; public Fattura(Persona fcliente) { cliente = fcliente; totale = 0; public Persona getintestatario(){ return cliente; public void aggiungiprodotto(prodotto fbene){ bene = fbene; totale = totale + (bene.getprezzo()*bene.getqta()); elenco = elenco + "\n Il bene è: "+bene.getvenduto()+ " il prezzo è: "+bene.getprezzo()+" la quantità è: "+bene.getqta(); public double gettotale(){ return totale; public String elencaprodotti(){ return elenco;
package mypackage; import java.util.*; public class ClienteClient { public static void main (String [] args){ String nome,cognome,cf; String nomep; double prezzo; int q; Scanner in; in = new Scanner (System.in); System.out.println("Inserisci nome, cognome,e cod. fiscale del cliente: "); nome = in.nextline(); cognome = in.nextline(); cf = in.nextline(); Persona mycli = new Persona(nome,cognome,cf); Fattura f = new Fattura(mycli); System.out.println("Inserisci il nome, il prezzo e la quantità del prodotto: "); in = new Scanner(System.in); nomep = in.nextline(); while (!nomep.equalsignorecase("stop")) { in = new Scanner(System.in); prezzo = in.nextdouble(); in = new Scanner(System.in); q = in.nextint(); Prodotto p = new Prodotto(nomep,prezzo,q); f.aggiungiprodotto(p); System.out.println("Inserire un altro prodotto o inserire stop per uscire"); in = new Scanner(System.in); nomep = in.nextline(); System.out.println("La fattura è di: \n\t"); System.out.println(f.getIntestatario().toString); //getintestario restituisce un oggetto di tipopersona, qui invochiamo il metodo tostring dell oggetto Persona per stamparnela descrizione System.out.println(f.elencaProdotti()); System.out.println("Il totale della fattura è: "+f.gettotale()); Progetto Carta Progettare una classe Carta che rappresenti una carta da gioco. Ogni carta deve avere un seme (cuore, quadri, fiori e picche) e un valore. Realizzare i seguenti metodi: estrai: inizializza una carta casualmente equals: restituisce un boolean che indica se due carte sono uguali (cfr metodo equals per confrontare stringhe). Scrivere un programma client che, estratte due carte, verifica se sono uguali.
public class Carta { private char seme; private byte figura; /** Creates a new instance of Carta */ public Carta() { estrai(); public void estrai() { int numg; numg=(int)(math.random()*4+1); switch (numg){ case 1: seme='p'; break; case 2: seme ='C'; break; case 3: seme='q'; break; case 4: seme='f'; break; figura=(byte)(math.random()*13 +1); public boolean equals(carta carta2) { boolean carteuguali=false; if (seme==carta2.getseme()&&figura==carta2.getfigura()){ carteuguali=true; return carteuguali; public char getseme() { return seme; public byte getfigura() { return figura; public class CartaClient { public static void main(string[] args) { // TODO code application logic here Carta carta1 = new Carta(); Carta carta2=new Carta(); carta1.estrai(); carta2.estrai(); boolean isequal; isequal = carta1.equals(carta2); if (isequal) System.out.print("Le carte sono uguali"); else System.out.print("Le carte sono diverse");
Progetto Negozio Realizzare una classe CD caratterizzata da titolo, autore e numero di codice. Realizzare una classe che rappresenti un Negozio che vende CD. La classe è caratterizzata da: CD in vendita (si assuma che siano 4), il CD più venduto e il numero totale di CD venduti. Fornisce i seguenti servizi stampaelenco: per ogni cd in vendita stampa titolo, autore e codice registravendita(): riceve in input il codice del cd venduto e registra la vendita getpiuvenduto getnumerovendite Realizzare un programma client che: - costruisca un negozio di CD, impostando i 4 cd in vendita - stampi all utente la lista dei CD (indicando titolo, autore e codice) e chieda all utente di inserire il codice del CD che vuole acquistare. Ogni vendita viene così registrata. Terminare l inserimento quando l utente digita stop. Al termine del programma stampare il numero totale di CD venduti e titolo e autore del CD più venduto. public class CD { private String autore, titolo; private int codice, numvenduti; /** Creates a new instance of CD */ public CD(String fautore, String ftitolo, int fcod) { autore=fautore; titolo=ftitolo; codice=fcod; public String getautore() { return autore; public String gettitolo() { return titolo; public int getcodice() { return codice; public int getvenduti() { return numvenduti; public void venduto() { numvenduti++;
public class Negozio { private CD cd1, cd2, cd3, cd4; private int numcd1=0, numcd2=0, numcd3=0, numcd4=0; private int numvendite=0; /** Creates a new instance of Negozio */ public Negozio(CD fcd1, CD fcd2,cd fcd3,cd fcd4) { cd1=fcd1; cd2=fcd2; cd3=fcd3; cd4=fcd4; public void stampaelenco(){ System.out.println (cd1.getautore() + " " + cd1.gettitolo() + " COD: " + cd1.getcodice()); System.out.println (cd2.getautore() + " " + cd2.gettitolo() + " COD: " + cd2.getcodice()); System.out.println (cd3.getautore() + " " + cd3.gettitolo() + " COD: " + cd3.getcodice()); System.out.println (cd4.getautore() + " " + cd4.gettitolo() + " COD: " + cd4.getcodice()); public void registravendita(int fcod) { if (fcod==cd1.getcodice()) cd1.venduto(); else if (fcod==cd2.getcodice()) cd2.venduto(); else if (fcod==cd3.getcodice()) cd3.venduto(); else if (fcod==cd4.getcodice()) cd4.venduto(); numvendite++; public CD getpiuvenduto() { CD cdpiuvenduto = cd1; if (cd2.getvenduti()>cdpiuvenduto.getvenduti()) cdpiuvenduto=cd2; if (cd3.getvenduti()>cdpiuvenduto.getvenduti()) cdpiuvenduto=cd3; if (cd4.getvenduti()>cdpiuvenduto.getvenduti()) cdpiuvenduto=cd4; return cdpiuvenduto; public int getvendite() { return numvendite; import java.util.*; public class NegozioClient { /** Creates a new instance of NegozioClient */ public NegozioClient() { public static void main(string[] args) { // TODO code application logic here CD mycd1 = new CD ("Buoni o cattivi", "Vasco Rossi", 1); CD mycd2 = new CD ("All that you can't leave behind", "U2", 2); CD mycd3 = new CD ("Out of time", "R.E.M.", 3); CD mycd4 = new CD ("Sugar", "Zucchero", 4); Negozio cdshop = new Negozio (mycd1, mycd2,mycd3,mycd4); String risp; int codice; Scanner in; cdshop.stampaelenco(); System.out.println ("Vuoi acquistare un CD? Inserisci il codice. Stop per uscire."); in= new Scanner (System.in); risp=in.nextline(); while (!risp.equalsignorecase("stop")) { codice= Integer.parseInt(risp); cdshop.registravendita(codice); System.out.println("Vuoi acquistare un altro CD? Inserisce il codice. STOP per uscire"); in= new Scanner (System.in); risp=in.nextline(); CD bestcd; bestcd=cdshop.getpiuvenduto(); System.out.println ("Il cd più venduto è: "+ bestcd.gettitolo()); System.out.println ("Il numero totale delle vendite é:" + cdshop.getvendite());