Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Huiswerkvragen: Exacte vakken (https://forum.scholieren.com/forumdisplay.php?f=17)
-   -   [Inf] Sorteren op naam (Visual Cafe) (https://forum.scholieren.com/showthread.php?t=1285157)

TLO 15-10-2005 12:55

[Inf] Sorteren op naam (Visual Cafe)
 
Voor informatica moet ik een applet maken die het volgende doet:
APPLET Cijferadministratie (Visual Cafe)

* 2 invoervelden (Naam leerling en cijfer)
* 3 knoppen ( voegtoe, sorteer op naam, sorteer op cijfer)
* lijst (waar de gegevens in komen te staan)

Het toevoegen lukt nog wel, maar nu is de bedoeling dat je het programma zo programmeert, dat hij kan sorteren (op naam en op cijfer).

De voegtoeknop:

void toevoegKnop_ActionPerformed(java.awt.event.ActionEvent event)
{
//ophalen van naam + cijfer
String naam = leerlingVeld.getText();
int cijfer = Integer.parseInt(cijferVeld.getText());
//toevoegen naam en cijfer aan de lijst
leerlingLijst.add(naam + " - " + cijfer);

//toevoegen naam en cijfer aan de array leerlingRij
leerlingRij[aantalleerlingen].naam = naam;
leerlingRij[aantalleerlingen].cijfer = cijfer;

//teller aantalleerlingen met 1 verhogen
aantalleerlingen++;

leerlingVeld.setText("");
cijferVeld.setText("");
}


En dit heb ik geprobeerd met de sorteerknop: (op naam)

void naamKnop_ActionPerformed(java.awt.event.ActionEvent event)
{
// indexRij ophalen ??
// als indexRij groter is dan indexRij + 1
// dan zet je indexRij in extra veld en indexRij + 1 in indexRij
// en extra veld in indexRij + 1
// zo niet dan ga je naar de volgende

// dat dan zo vaak doen als er aantal namen zijn
// dan zet je de namen op de juiste plek


String hulpveld = "";
int hulpcijfer = 0;

for(int teller = 0; teller < aantalleerlingen; teller++)
{
for(int index = 0; index < aantalleerlingen -1; index++)
{
if(leerlingRij[index].naam.compareTo(leerlingRij[index+1].naam) > 0);
{
hulpveld = leerlingRij[index].naam;
leerlingRij[index].naam = leerlingRij[index+1].naam;
leerlingRij[index+1].naam = hulpveld;

}
}
}

leerlingLijst.removeAll();

for(int t = 0; t < aantalleerlingen; t++)
{
leerlingLijst.add(leerlingRij[t].naam + " - " + leerlingRij[t].cijfer);
}
}


Je moet dus een hulpveld maken, zodat een naam die verplaatst moet worden tijdelijk ergens anders wordt neergezet.
Alleen nu kom ik vast te zitten...meer weet ik niet!
Wat moet ik doen om de applet werkend te maken?

Alvast bedankt!!!!

p.s.: Er zit een klasse bij, genoemd 'Leerling'.

public class Leerling
{
public String naam;
public int cijfer;
}


Ook boven de init, en in de init zelf is wat toegevoegd:

/*
A basic extension of the java.applet.Applet class
*/

import java.awt.*;
import java.applet.*;

public class cijferApplet extends Applet
{
//initialisatie en declaratie
private int AANTAL = 30;
//private Leering leerling = new Leerling();
//Voor een array geldt:
private Leerling[] leerlingRij = new Leerling[AANTAL];

//Declaratie voor de teller van aantalleerlingen (positiebepaling)
int aantalleerlingen = 0;


public void init()
{
//initialiseren van de velden van de array leerlingRij
for (int i = 0 ; i < AANTAL; i++)
{
leerlingRij[i] = new Leerling();
}


// Take out this line if you don't use..........enz.

IvdSangen 15-10-2005 19:24

Ik zal even zeggen hoe je algemeen een array van getallen sorteert. Dat kan je dan toepassen in je applet.

Code:

for(i=1;i<n;i++)
{
  temp=array[i];
  j=i;
  while ((temp>array[j-1]) && (j>0))
  {
    array[j]=array[j-1];
    j--;
  }
  array[j]=temp;
}

Het algoritme heet insertion sort. Het komt erop neer dat dat je bij het tweede element begint en kijkt waar die in het array gestopt moet worden. Voor het element wat je inspecteert is het array al gesorteerd dus kun je alles ervoor telkens 1 plaats opschuiven totdat je op de goeie plek zit waar je je getal kwijt wil. Nu heb je een array wat 1 getal meer gesorteerd heeft. Dat doe je dan dus voor alle getallen.


Alle tijden zijn GMT +1. Het is nu 01:49.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.