RETT PÅ JAVA
     
 



     Eksempler og løsninger   
     Java og easyIO   
     Retteliste   
     Undervisning   
     Hjelp   
     Om boka   
     Forsiden   
                      



import easyIO.*;
import javax.swing.*;
import java.awt.*;

class Hopprennswing {
    public final static double TABELLPUNKT = 120;
    public final static double METERVERDI = 1.8;

    public static void main(String[] args) {
	In tastatur = new In();
	int antalldeltakere = 4;

	// initierer deltakerne
	Hopper[] deltakere = new Hopper[antalldeltakere];
	for (int i = 0; i  < antalldeltakere; i++) {
	    deltakere[i] = new Hopper();
	}
	// Første omgang
	int omgang = 1;
        for (int i = 0; i < antalldeltakere; i++) {
	    System.out.println("Hopper nr : " + deltakere[i].visNummer());
	    poengberegning(tastatur, omgang, deltakere[i]);
	}
	// sorter etter poeng
	deltakere = sorter(deltakere);

	// skriv ut
	skrivut(deltakere, omgang);
	
	// Andre omgang. startrekkefølgen snus og bare de 30 beste hopper
	omgang = 2;
	int første;
	if (antalldeltakere < 31) {
	    første = antalldeltakere - 1; // alle hopper
	} else {
	    første = 29; // hopperne 0-29 hopper.
	}
        for (int i = første; i > -1; i--) {
	    System.out.println("Hopper nr : " + deltakere[i].visNummer());
	    poengberegning(tastatur, omgang, deltakere[i]);
	}

	// sorter etter poeng
	deltakere = sorter(deltakere);

	// skriver ut resultatliste
	skrivut(deltakere, omgang);
    }
    static Hopper[] sorter(Hopper[] a) {
	for (int k = 0 ; k < a.length-1; k++) {
	    Hopper  t = a[k + 1];
	    int i = k;
	    while (i >= 0 &&  a[i].visPoeng() < t.visPoeng()) {
		a[i + 1] =  a[i];
		i--;
	    }
	    
	    a[i + 1] = t;
	} // slutt på sortering
	
	return a;
    }
    static void skrivut(Hopper[] deltakere, int omgang) {
	Resultatliste rl = new Resultatliste();
	rl.setTitle("Rekkefølge etter " + omgang + ".omgang");
	rl.setSize(400,300);
	for (int i = 0; i < deltakere.length; i++) {
	    rl.liste.append("Nr " + (i+1)+ " Hopper nr " +  " " +
			       deltakere[i].visNummer() + " " +
			       deltakere[i].visLengde(1) +  " " +
			       deltakere[i].visLengde(2) + " " +
			       deltakere[i].visPoeng() + "\n");
	}
	rl.setVisible(true);
    }
    
   static void poengberegning(In tastatur, int omgang, Hopper h) {
	int omg = omgang - 1; // for å slippe å dra med "-1"
	double[] stil = new double[5];
	double stilpoeng = 0;
	double lengdepoeng;
	double stilmin, stilmaks;
	double[] stilkarakterer = new double[5];

	// leser inn hopplengde
	System.out.print("Oppgi lengde : ");
	h.lengde[omg] = tastatur.inDouble();
	// beregner lengdepoeng
	lengdepoeng = 60 + (h.lengde[omg] - TABELLPUNKT)*METERVERDI;

	// leser inn stilkarakterer og summerer dem samtidig
	for (int i = 0; i < stilkarakterer.length; i ++) {
	    System.out.print("Dommer nr " + (i+1) + " : ");
	    stilkarakterer[i] = tastatur.inDouble();
	    stilpoeng = stilpoeng + stilkarakterer[i];
	}
	// finner minste stilpoeng
	stilmin = stilkarakterer[0];
	for (int i = 1; i < stilkarakterer.length; i++) {
	    if (stilmin > stilkarakterer[i]) stilmin = stilkarakterer[i];
	}
 	// finner største stilpoeng
	stilmaks = stilkarakterer[0];
	for (int i = 1; i < stilkarakterer.length; i++) {
	    if (stilmaks < stilkarakterer[i]) stilmaks = stilkarakterer[i];
	}
	// trekker fra største og minste i stilpoengene
	stilpoeng = stilpoeng - stilmin - stilmaks;

	// beregner totalpoeng
	h.poeng[omg] =  stilpoeng + lengdepoeng;
	h.totalpoeng = h.totalpoeng + h.poeng[omg];
   }
}


class Hopper {
    static int antall = 0;
    double[] lengde = new double[2];
    double[] poeng = new double[2];
    double totalpoeng;
     int startnummer;
    
    Hopper () {
	antall++;
	startnummer = antall;
	lengde[0] = 0;
	lengde[1] = 0;
	totalpoeng = 0;
    }
 
    public int visNummer() {
	return startnummer;
    }
    public double visPoeng() {
	return totalpoeng;
    }
    public double visLengde(int omgang) {
	return lengde[omgang - 1];
    }
}

class Resultatliste extends JFrame {
    public Resultatliste() {
        initComponents();
    }
    private void initComponents() {
        jPanel1 = new JPanel();
        jScrollPane1 = new JScrollPane();
        liste = new JTextArea();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                dispose();
            }
        });

        jPanel1.setLayout(new BorderLayout());
        jScrollPane1.setViewportView(liste);
        jPanel1.add(jScrollPane1, BorderLayout.CENTER);
        getContentPane().add(jPanel1, BorderLayout.CENTER);
        pack();
    }

    private JScrollPane jScrollPane1;
    public JTextArea liste;
    private JPanel jPanel1;
}


 
Tilbake