Rezolvare - Laborator FAIMA #4 / An 1 Semestru 1

Clasa Masina


public class Masina {
    private String nume;
    private int vcurba,vlinie,handicap;
/**
 * 
 * @param nume
 * @param vcurba
 * @param vlinie
 * @param handicap 
 */
    public Masina(String nume, int vcurba, int vlinie, int handicap) {
        this.nume = nume;
        this.vcurba = vcurba;
        this.vlinie = vlinie;
        this.handicap = handicap;
    }
    

    public String getNume() {
        return nume;
    }

    public void setNume(String nume) {
        this.nume = nume;
    }

    public int getVcurba() {
        return vcurba;
    }

    public void setVcurba(int vcurba) {
        this.vcurba = vcurba;
    }

    public int getVlinie() {
        return vlinie;
    }

    public void setVlinie(int vlinie) {
        this.vlinie = vlinie;
    }

    public int getHandicap() {
        return handicap;
    }

    public void setHandicap(int handicap) {
        this.handicap = handicap;
    }
    
}

Clasa Segment

public class Segment {
    public static final int CURBA=0,LINIE=1;
    
    private int tip,distanta;
/**
 * 
 * @param tip
 * @param distanta 
 */
    public Segment(int tip, int distanta) {
        this.tip = tip;
        this.distanta = distanta;
    }

    public int getTip() {
        return tip;
    }

    public void setTip(int tip) {
        this.tip = tip;
    }

    public int getDistanta() {
        return distanta;
    }

    public void setDistanta(int distanta) {
        this.distanta = distanta;
    }
    
    
}

Clasa Circuit

public class Circuit {
    private String nume;
    private Segment[] segmente;
/**
 * 
 * @param nume
 * @param segmente 
 */
    public Circuit(String nume, Segment[] segmente) {
        this.nume = nume;
        this.segmente = segmente;
    }    

    public String getNume() {
        return nume;
    }

    public void setNume(String nume) {
        this.nume = nume;
    }

    public Segment[] getSegmente() {
        return segmente;
    }

    public void setSegmente(Segment[] segmente) {
        this.segmente = segmente;
    }
    
}

Clasa Rezultat

public class Rezultat implements Comparable< Rezultat > {

    private String numeMasina;
    private int timp;

    /**
     * 
     * @param numeMasina
     * @param timp 
     */
    public Rezultat(String numeMasina, int timp) {
        this.numeMasina = numeMasina;
        this.timp = timp;
    }

    public String getNumeMasina() {
        return numeMasina;
    }

    public void setNumeMasina(String numeMasina) {
        this.numeMasina = numeMasina;
    }

    public int getTimp() {
        return timp;
    }

    public void setTimp(int timp) {
        this.timp = timp;
    }

    @Override
    public int compareTo(Rezultat o) {
        return this.timp - o.timp;
    }
}
Clasa principala

public class RezolvareFAIMA {
    /*
     * Definim constantele din aplicatie: masini, segmente, circuite
     */

    private static final Masina[] MASINI = new Masina[]{
        new Masina("Turtle Apotheosis", 2, 10, 0),
        new Masina("Gently Snail", 5, 4, 20),
        new Masina("Sleepy MacLarden", 2, 15, 25),
        new Masina("Old Tom Sheriff", 5, 10, 50)
    };
    private static final Circuit[] CIRCUITE = new Circuit[]{
        new Circuit("Burburring", new Segment[]{
            new Segment(Segment.CURBA, 100),
            new Segment(Segment.LINIE, 200),
            new Segment(Segment.CURBA, 50),
            new Segment(Segment.LINIE, 50),
            new Segment(Segment.LINIE, 200),
            new Segment(Segment.CURBA, 50),
            new Segment(Segment.CURBA, 200),
            new Segment(Segment.LINIE, 150)
        }),
        new Circuit("Silversandman", new Segment[]{
            new Segment(Segment.LINIE, 200),
            new Segment(Segment.CURBA, 100),
            new Segment(Segment.CURBA, 100),
            new Segment(Segment.LINIE, 50),
            new Segment(Segment.CURBA, 200),
            new Segment(Segment.LINIE, 50),
            new Segment(Segment.CURBA, 100),
            new Segment(Segment.LINIE, 200)
        })
    };

    public static void main(String[] args) {
        for (Circuit c : CIRCUITE) {
            System.out.println("Rezultatele pe circuitul " + c.getNume());
            Rezultat[] rezultate = new Rezultat[MASINI.length];
            int i = 0;
            for (Masina m : MASINI) {
                int timp = m.getHandicap();
                for (Segment s : c.getSegmente()) {
                    switch (s.getTip()) {
                        case Segment.CURBA:
                            timp += s.getDistanta() / m.getVcurba();
                            break;
                        case Segment.LINIE:
                            timp += s.getDistanta() / m.getVlinie();
                            break;
                    }
                }
                rezultate[i++] = new Rezultat(m.getNume(), timp);
            }
            Arrays.sort(rezultate);
            for (Rezultat r : rezultate) {
                System.out.println(r.getNumeMasina() + ": " + r.getTimp());
            }
        }
    }
}

0 comentarii: