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
|