[Java] winnaarsberekening

Pagina: 1
Acties:

  • Beyond
  • Registratie: Juni 2001
  • Laatst online: 16-09 21:06

Beyond

Dussssss.......

Topicstarter
Hoe moet je een vergelijking maken zodat je kunt zien wie de winnaar is ?


Bij een schaatskampioenschap worden achtereenvolgens de volgende afstanden verreden: 500 meter, 5000 meter, 1500 meter en 10000 meter. Elke tijd wordt geregistreerd in honderdsten van sekonden nauwkeurig. De tijden behaald op de verschillende afstanden worden omgerekend naar punten door elke tijd te herleiden tot een 500 meter tijd. De rijder met het laagste puntentotaal mag zich kampioen noemen.
De te ontwikkelen applet moet voor een willekeurig aantal deelnemers aan de hand van de gereden tijden het puntentotaal bepalen en naar het scherm schrijven. Nadat de gegevens van de laatste deelnemer zijn verwerkt moet voor elk van de 4 afstanden het startnummer en de tijd van de winnaar naar het scherm worden geschreven, alsmede het startnummer en het puntentotaal van de winnaar van het totaalklassement.

Al het goeie.......


Verwijderd

Je kunt alle resultaten in een array douwen, en die sorteren op de punten. Vervolgens laat je een loopje de Array op het scherm zetten -> de puntenlijst.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

ik heb je topictitel ietsje duidelijker gemaakt.

Denk, zeker met de tip van Cheatah, er even wat beter over na.

  • El Martino
  • Registratie: December 2000
  • Laatst online: 04-08 10:37

El Martino

Zo niet, dan toch.

Tja, hoever wil je gaan? Een vergelijking lijkt me niet de goede methode. Als je het 'netjes' wilt oplossen, maak dan een class afstand met een functie die aan de hand van de afstand een punten-waarde terug geeft.

Maak een class schaatser die een array met objecten afstanden heeft. Methode die totaal (punten) terug geeft en tenslotte een class kampioenschap oid die een methode heeft die de winnaar teruggeeft.

Netjes objectgeorienteerd, daar hou ik van :)

"To make a bad day worse, spend it wishing for the impossible", Calvin (Calvin & Hobbes)


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Misschien kan je je beter eerst eens goed verdiepen in de taal Java. Maak eens wat simpele applicaties die misschien een deel van jouw probleem oplossen. Je krijgt zo meer gevoel voor programmeren.

Jouw vraag is namelijk absoluut niet ingewikkeld op een bepaald technisch punt. Het is meer een vraag van: "Hoe programmeer ik?". Dat is helaas een vraag waarop je alleen zelf een antwoord kunt vinden door documentatie door te lezen en zelf te programmeren.

Het heeft weinig nut om nu exact voor te kauwen hoe je dit zou kunnen maken. /14 is vooral bedoeld voor het oplossen van technische (deel) problemen, waar je niet uitkomt. Een totaal oplossing zal je toch zelf moeten aanpakken :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
_Martijn_: Netjes objectgeorienteerd, daar hou ik van :)
Klinkt inderdaad aardig goed :) . Je hebt aardig opgelet bij de les ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Beyond
  • Registratie: Juni 2001
  • Laatst online: 16-09 21:06

Beyond

Dussssss.......

Topicstarter
Grotendeels lukt het ook wel. Ik heb dus meerdere deelnemers met verschillende tijden hoe kan ik dan de snelste tijd dan bepalen van een bepaalde afstand ?
Kom daar niet uit.

Al het goeie.......


  • El Martino
  • Registratie: December 2000
  • Laatst online: 04-08 10:37

El Martino

Zo niet, dan toch.

Op zondag 11 november 2001 01:53 schreef Beyond het volgende:
Grotendeels lukt het ook wel. Ik heb dus meerdere deelnemers met verschillende tijden hoe kan ik dan de snelste tijd dan bepalen van een bepaalde afstand ?
Kom daar niet uit.
Als ik je eerste post lees, begrijp ik dat de tijd wordt herleid naar een puntenaantal, niet de finish-plaats. Of zie ik het fout :?

"To make a bad day worse, spend it wishing for the impossible", Calvin (Calvin & Hobbes)


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Lijkt me gewoon het makkelijkst om een OF een vector OF een linked list te nemen. Vooral met een linked list kun je makkelijk 1 "schaatser" er tussenuit plukken en hoger in de list zetten. Alhoewel dit in Java met een Vector ook doodeenvoudig is. Kwestie van de laagste "schaatser" zoeken die een hogere waarde heeft dan die je in moet voegen. Vervolgens op de index achter die schaatser invoegen. De rest schuift dan netjes op.

Array's zijn in Java voor dynamische opslag heel erg ongebruikelijk. Vectoren zijn veel flexibeler en mits goed gebruikt, minstens zo snel.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 16:30

Janoz

Moderator Devschuur®

!litemod

Nog makkelijker is om een soort schatser class te maken, door hieraan ook een compareTo methode in te zetten die de punten van de schaatser vergelijkt met de punten van een andere schaatser kun je een sortedset oid gebruiken. Als een schaatser dan een nieuwe tijd heeft, haal je die schaatser eruit, voegt de nieuwe tijd toe, en stop het weer in de set. Aan het eind laat je java die schaatsers uit de set trekken, en ze staan mooi op volgorde.

Het berekenen van de punten lijkt me ook niet zo moeilijk. Tijd van 500 meter hoef je niks mee te doen, de rest moet je (500 * tijd huidige afstand / huidige afstand) doen (dacht ik, mischien gebruiken ze er ook wel wat anders voor)..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op zondag 11 november 2001 01:53 schreef Beyond het volgende:
Grotendeels lukt het ook wel. Ik heb dus meerdere deelnemers met verschillende tijden hoe kan ik dan de snelste tijd dan bepalen van een bepaalde afstand ?
Kom daar niet uit.
Door alle tijden met een elkaar te vergelijken. dit is vrij basic op te lossen met een while en een if.
(of natuurlijk Arrays.sort()) maar ik krijg de indruk dat je de basics van java niet onder de knie hebt..

Verdeel je programma in deel problemen. en schrijf dan pseudocode om te kijken hoe je die deelproblemen op moet lossen

  • El Martino
  • Registratie: December 2000
  • Laatst online: 04-08 10:37

El Martino

Zo niet, dan toch.

Op zondag 11 november 2001 04:32 schreef The - DDD het volgende:
Lijkt me gewoon het makkelijkst om een OF een vector OF een linked list te nemen. Vooral met een linked list kun je makkelijk 1 "schaatser" er tussenuit plukken en hoger in de list zetten. Alhoewel dit in Java met een Vector ook doodeenvoudig is. Kwestie van de laagste "schaatser" zoeken die een hogere waarde heeft dan die je in moet voegen. Vervolgens op de index achter die schaatser invoegen. De rest schuift dan netjes op.

Array's zijn in Java voor dynamische opslag heel erg ongebruikelijk. Vectoren zijn veel flexibeler en mits goed gebruikt, minstens zo snel.
Je hebt natuurlijk gelijk. :D Dat krijg je ervan als je veel in Perl en PHP bezig bent...

"To make a bad day worse, spend it wishing for the impossible", Calvin (Calvin & Hobbes)


  • Beyond
  • Registratie: Juni 2001
  • Laatst online: 16-09 21:06

Beyond

Dussssss.......

Topicstarter
Ik kom nog steeds niet uit het gedeelte om de snelste van elke afstand naar het scherm te sturen. Please help


ik heb nu dit :


public class hd3 extends Applet implements ActionListener
{
private Label lbStartnummer;
private Label lbEindTijd500;
private Label lbEindTijd5000;
private Label lbEindTijd1500;
private Label lbEindTijd10000;
private TextField tfStartnummer;
private TextField tfEindTijd500;
private TextField tfEindTijd5000;
private TextField tfEindTijd1500;
private TextField tfEindTijd10000;
private Button buttonVolgende;

public void init()
{
setSize(150,150);

lbStartnummer = new Label("Startnummer");
add(lbStartnummer);

tfStartnummer = new TextField(3);
add(tfStartnummer);

lbEindTijd500 = new Label("Eindtijd 500 meter");
add(lbEindTijd500);

tfEindTijd500 = new TextField(5);
add(tfEindTijd500);

lbEindTijd5000 = new Label("Eindtijd 5000 meter");
add(lbEindTijd5000);

tfEindTijd5000 = new TextField(5);
add(tfEindTijd5000);

lbEindTijd1500 = new Label("Eindtijd 1500 meter");
add(lbEindTijd1500);

tfEindTijd1500 = new TextField(5);
add(tfEindTijd1500);

lbEindTijd10000 = new Label("Eindtijd 10000 meter");
add(lbEindTijd10000);

tfEindTijd10000 = new TextField(5);
add(tfEindTijd10000);

buttonVolgende = new Button("Volgende");
buttonVolgende.addActionListener(this);
add(buttonVolgende);
}

public void actionPerformed(ActionEvent e)
{
int startnummer;
float eindtijd500;
float eindtijd5000;
float eindtijd1500;
float eindtijd10000;

if (e.getSource() == tfStartnummer)
{
startnummer = Integer.parseInt(tfStartnummer.getText());
eindtijd500 = Integer.parseInt(tfEindTijd500.getText());
eindtijd5000 = Integer.parseInt(tfEindTijd5000.getText());
eindtijd1500 = Integer.parseInt(tfEindTijd1500.getText());
eindtijd10000 = Integer.parseInt(tfEindTijd10000.getText());
schrijfWinnaar500(tfWinnaar500,startnummer,eindtijd500);
schrijfWinnaar5000(tfWinnaar5000,startnummer,eindtijd5000);
schrijfWinnaar1500(tfWinnaar1500,startnummer,eindtijd1500);
schrijfWinnaar10000(tfWinnaar10000,startnummer,eindtijd10000);
}
else //buttonVolgende
{
tfStartnummer.setText("");
tfEindTijd500.setText("");
tfEindTijd5000.setText("");
tfEindTijd1500.setText("");
tfEindTijd10000.setText("");
}

private void schrijfWinnaar500(TextField tf,int startnummer, float eindtijd500)
{
String strWinnaar500 = "De winnaar op de 500 meter is :" + integer.toString(startnummer, eindtijd500)
tf.setText(strWinnaar500);
}

private void schrijfWinnaar5000(TextField tf,int startnummer,float eindtijd5000)
{
String strWinnaar5000 = "De winnaar op de 5000 meter is :" + integer.toString(startnummer, eindtijd5000)
tf.setText(strWinnaar5000);
}

private void schrijfWinnaar1500(TextField tf,int startnummer,float eindtijd1500)
{
String strWinnaar500 = "De winnaar op de 1500 meter is :" + integer.toString(startnummer, eindtijd1500)
tf.setText(strWinnaar1500);
}

private void schrijfWinnaar10000(TextField tf,int startnummer,float eindtijd10000)
{
String strWinnaar10000 = "De winnaar op de 10000 meter is :" + integer.toString(startnummer, eindtijd10000)
tf.setText(strWinnaar10000);
}

}}

Al het goeie.......

Pagina: 1