Pages: [1]   Go Down
Print
Author Topic: Soluzione esame di giorno 9-11 - Compito A  (Read 957 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Simone Faro
Moderator
Matricola
*****
Offline Offline

Gender: Male
Posts: 67


WWW
« on: 09-11-2010, 16:51:20 »

Code:
import java.io.*;
import java.util.*;
import java.math.*;

interface Rect09  {
public BigDecimal getWidth();
public BigDecimal getHeight();
public BigDecimal getArea();
}

interface Area09  extends Comparable{
public BigDecimal getArea();
public int getNumberOfRect();
public Rect09[] getRects();
public int compareTo(Object o);
}

interface OLL09<E>  {
public E getMin();
public void insert(E element);
public int size();
}

class Rettangolo implements Rect09  {
private final BigDecimal height, width, area;
public Rettangolo(BigDecimal height, BigDecimal width) {
this.height = new BigDecimal(height.toString());
this.width = new BigDecimal(width.toString());
area = height.multiply(width);
}
public BigDecimal getWidth() {return new BigDecimal(width.toString());}
public BigDecimal getHeight() {return new BigDecimal(height.toString());}
public BigDecimal getArea() {return new BigDecimal(area.toString());}
}

class Area implements Area09 {
private BigDecimal area;
private int size;
private Rect09[] set;
public Area(Rect09[] inputSet, int size) {
set = new Rect09[size];
int i = 0;
area = new BigDecimal(0.0);
for(Rect09 x : inputSet) {
set[i++] = new Rettangolo(x.getHeight(), x.getWidth()) ;
area = area.add(x.getArea());
}
this.size = size;
}
public BigDecimal getArea() {return new BigDecimal(area.toString());}
public int getNumberOfRect() {return size;}
public Rect09[] getRects() {
Rect09[] output = new Rect09[size];
int i = 0;
for(Rect09 x : set) output[i++] = new Rettangolo(x.getHeight(), x.getWidth()) ;
return output;
}
public int compareTo(Object o)  throws ClassCastException {
Area b = (Area) o;
return area.compareTo(b.getArea());
}
}

class LNode<E> {
private E element;
private LNode<E> next;
public LNode(E element, LNode<E> next) {
this.element = element;
this.next = next;
}
public E getElement(){return element;}
public LNode<E> getNext(){return next;}
public void setNext(LNode<E> next) {this.next=next;}
}

class OLL<E extends Comparable> implements OLL09<E> {
private LNode<E> head;
int size;
public OLL()  {
size = 0;
head = null;
}
public E getMin() {return head.getElement();}
public LNode<E> getHead() {return head;}
public void insert(E element) {
LNode<E> tmp = head;
LNode<E> prev = null;
while(tmp!=null && tmp.getElement().compareTo(element)<0) {
prev = tmp;
tmp = tmp.getNext();
}
LNode<E> node = new LNode(element, tmp);
if(prev!=null) prev.setNext(node);
else head = node;
}
public int size() {return size;}
}

public class esame  {
    public static void main( String args[] ) throws IOException {
Scanner input = new Scanner(new File("input.txt"));
PrintWriter output = new PrintWriter("output.txt");
OLL<Area> list = new OLL<Area>();

while( input.hasNextInt() ) {
int numero = input.nextInt();
Rettangolo[] set = new Rettangolo[numero];
for(int i=0; i<numero; i++) {
String width = input.next();
String height = input.next();
set[i] = new Rettangolo( new BigDecimal(height), new BigDecimal(width) );
}
Area a = new Area(set, numero);
list.insert(a);
}
LNode<Area> tmp = list.getHead();
while(tmp!=null) {
output.write(tmp.getElement().getArea().toString()+"\n");
tmp = tmp.getNext();
}
input.close();
output.close();
}

}

Logged

________________________________
Simone Faro, Ph.D.
Dipartimento di Matematica e Informatica
Università di Catania
________________________________
crypt0
Apprendista Forumista
**
Offline Offline

Posts: 109


« Reply #1 on: 09-11-2010, 20:36:10 »

Anche leggendo la soluzione da Lei proposta non riesco a trovare l'errore che determinava l'output sbagliato del mio algoritmo ...

Se le classi dovevano essere immutabili, come mai il final è applicato solo alle variabili di istanza di Rettangolo?

In pratica credo proprio che verrò a ricevimento in questi giorni  boh
Si hanno notizie dei risultati?
Logged
mafalda
Apprendista Forumista
**
Offline Offline

Posts: 430


CЯΣDΣЯCI SΣMPЯΣ, ΛЯЯΣПDΣЯSI MΛI!


« Reply #2 on: 11-11-2010, 14:09:54 »

Qualcuno che ha fatto l'esame, gentilmente potrebbe postare il testo del compito? Nel sito dell'esercitazione i due file sono vuoti...
Grazie!
Logged

...๔єςเ, ๔єςเ, ๔єςเ...
Pages: [1]   Go Up
Print
Jump to: