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"); } }