Javakurs/Übungsaufgaben/Abzaehlspiel/Musterloesung: Unterschied zwischen den Versionen
< Javakurs | Übungsaufgaben | Abzaehlspiel
Jörg F (Diskussion | Beiträge) K (hat „Javakurs2007/Abzaehlspiel/Musterloesung“ nach „Javakurs/Übungsaufgaben/Abzaehlspiel/Musterloesung“ verschoben) |
(→Abzählspiel - Musterlösung) |
||
| Zeile 72: | Zeile 72: | ||
}// main | }// main | ||
}// class | }// class | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | // Alternativlösung: | ||
| + | |||
| + | import java.util.ArrayList; | ||
| + | |||
| + | public class Abzaehlspiel { | ||
| + | |||
| + | static int anzahl = 10000; | ||
| + | static ArrayList<Integer> runde = new ArrayList<Integer>();; | ||
| + | |||
| + | public static void main(String[] args) { | ||
| + | rundeFuellen(); | ||
| + | teilnehmerEntfernen(); | ||
| + | gewinnerAusgeben(); | ||
| + | } | ||
| + | |||
| + | private static void rundeFuellen(){ | ||
| + | for (int i = 0 ; i < anzahl ; i++){ | ||
| + | runde.add(i); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | private static void teilnehmerEntfernen(){ | ||
| + | // 0, 1, 2 => der Teilnehmer mit Index 2 wird als erstes entfernt | ||
| + | int raus = 2; | ||
| + | |||
| + | while(runde.size()>2){ | ||
| + | System.out.println("Entferne Teilnehmer "+ runde.get(raus)); | ||
| + | runde.remove(raus); | ||
| + | raus = (raus + 2)% runde.size(); | ||
| + | } | ||
| + | |||
| + | } | ||
| + | private static void gewinnerAusgeben(){ | ||
| + | System.out.println("Teilnehmer " + runde.toString() + " sind übrig"); | ||
| + | |||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
</nowiki> | </nowiki> | ||
Aktuelle Version vom 9. März 2012, 11:28 Uhr
Abzählspiel - Musterlösung
package abzaehlspiel;
public class Abzaehlspiel
{
public static void main(String[] args)
{
int[] personen = new int[10000];// Array fuer die Personen
int i;// Zaehlvariable
// allen Personen eine Nummer zuweisen
for (i = 0; i < 10000; i++)
{
// den Personen eine Nummer geben
personen[i] = i + 1;
}
int stelle = 0;// Stelle der Person, welche man gerade betrachtet
int zaehler = 0;// Variable, mit der man bis zum 3. zaehlt
int letzter = -1;// Stelle, an der der Letzte ertfernt wurde
// die eigentliche Abzaehlung
do
{
// ueberpruefen ob die person noch da ist...
if (personen[stelle] != 0)
{
// ... wenn ja, dann weiterzaehlen
zaehler++;
// ueberpruefen ob man beim 3. angekommen ist...
if (zaehler == 3)
{
// ... diese Person etfernen (seine Numer auf Null setzen)
personen[stelle] = 0;
zaehler = 0;// wieder von vorne anfangen zu zaehlen
letzter = stelle;// merken, wo als letztes entfernt wurde
}// if
}// if
// zum naechsten gehen
stelle++;
// ueberpruefen ob man am Ende ist...
if (stelle == personen.length)
{
// ... dann am Anfang fortsetzen
stelle = 0;
}
// die Schleife so lange wiederholen, bis man an der Stelle
// angekommen ist, an der man als Letztes jemanden entfernt hat,
// dann ist man einmal duch alle Personen durchgelaufen
// und hat dabei keinen entfernt => Ende
} while (stelle != letzter);
System.out.println("Uebrig bleiben:");
// Alle Personen durchgehen...
for (i = 0; i < 10000; i++)
{
// ... und wenn eine Person noch da ist...
if (personen[i] != 0)
{
// ...ausgeben
System.out.println(personen[i]);
}
}// for
}// main
}// class
// Alternativlösung:
import java.util.ArrayList;
public class Abzaehlspiel {
static int anzahl = 10000;
static ArrayList<Integer> runde = new ArrayList<Integer>();;
public static void main(String[] args) {
rundeFuellen();
teilnehmerEntfernen();
gewinnerAusgeben();
}
private static void rundeFuellen(){
for (int i = 0 ; i < anzahl ; i++){
runde.add(i);
}
}
private static void teilnehmerEntfernen(){
// 0, 1, 2 => der Teilnehmer mit Index 2 wird als erstes entfernt
int raus = 2;
while(runde.size()>2){
System.out.println("Entferne Teilnehmer "+ runde.get(raus));
runde.remove(raus);
raus = (raus + 2)% runde.size();
}
}
private static void gewinnerAusgeben(){
System.out.println("Teilnehmer " + runde.toString() + " sind übrig");
}
}