Java :: Aufgabe #256
4 Lösungen

ÜBUNG ARRAYS- Wie viele Türen stehen am Ende dieses Algorithmus offen?
Anfänger - Java
von sinanoz05
- 31.01.2020 um 08:39 Uhr
Ein mittelalterlicher Herrscher nahm bei einem Feldzug 100 Feinde gefangen, die er in 100 Einzelzellen steckte. An seinem Geburtstag sollten einige freigelassen werden, und zwar nach einem sehr speziellen Verfahren. Zunächst werden alle Zellentüren aufgeschlossen. Dann wird in einem zweiten Durchgang jede zweite Türe wieder geschlossen. Im dritten Durchgang wird jede dritte Tür geschlossen, falls sie offen steht, oder geöffnet falls sie geschlossen ist. Und so geht es im nächsten Durchgang weiter, bis zum hundertsten Durchgang. Wieviele Türen stehen am Ende dieses Algorithmus offen?
Verwenden Sie ein Array vom Datentyp bool mit 100 Elementen. True soll eine offene Türe repräsentieren und false eine geschlossene. Erstellen Sie ein Programm um die Anzahl der offenen Türen zu bestimmen und geben Sie das Ergebnis auf der Konsole aus
Verwenden Sie ein Array vom Datentyp bool mit 100 Elementen. True soll eine offene Türe repräsentieren und false eine geschlossene. Erstellen Sie ein Programm um die Anzahl der offenen Türen zu bestimmen und geben Sie das Ergebnis auf der Konsole aus
Lösungen:

package com.company; public class Main { public static void main(String[] args) throws InterruptedException { // write your code here boolean[] doorsOpen = new boolean[100]; int counter = 0; for (int z = 1; z < doorsOpen.length; z++) { counter++; for (int i = -1 + counter; i < doorsOpen.length; i = i + z) { if (doorsOpen[i] == false) { doorsOpen[i] = true; } else if (doorsOpen[i] == true) { doorsOpen[i] = false; } // System.out.println(i+1 + " ist " + doorsOpen[i]); } } // ausgabe for (int b = 0; b < doorsOpen.length; b++) { if (doorsOpen[b] == true) { int doornumber = b+1; System.out.println("Tür " + doornumber + " bleibt offen"); } } } }

boolean[] gefangen = new boolean[100]; for (int i = 0; i < gefangen.length; i++) { gefangen[i] = true; if (i % 2 == 0) { gefangen[i] = false; } } for (int i = 0; i < gefangen.length; i++) { if (i % 2 == 0) { gefangen[i] = false; } } for (int i = 0; i < gefangen.length; i++) { if (i % 3 == 0) { if (gefangen[i] = false) { gefangen[i] = true; } if (gefangen[i] = true) { gefangen[i] = false; } } } int countT = 0; int countF = 0; for (int i = 0; i < gefangen.length; i++) { if (gefangen[i] == true) { countT++; } if (gefangen[i] == false) { countF++; } } System.out.println(countT + " Türen sind offen und " + countF + " sind geschlossen");
Hallo,
ich dachte ich probiere ich auch mal an einer Java Version.
Habe das ganze in IntelliJ IDEA umgesetzt mit Java 13.0.2
Grüße
Waldgeist
Java-Code
ich dachte ich probiere ich auch mal an einer Java Version.
Habe das ganze in IntelliJ IDEA umgesetzt mit Java 13.0.2
Grüße
Waldgeist

package com.company; public class Main { private static boolean[] Zellen; public static void main(String[] args) { System.out.println ("Programm zur Ermittlung wieviele Tueren offen stehen.\n\n"); Zellen = new boolean[100] ; for (int i = 1; i <= 100; i++) { Zellen[i-1] = true; } for (int d = 2; d <= 100; d++) { for (int c = 1; c <= 100; c++) { if ((c % d == 0) & (Zellen[c - 1]) == true) { Zellen[c - 1] = false; } else if ((c % d == 0) & (Zellen[c - 1]) == false) { Zellen[c - 1] = true; } } } int Anzahl = 0; for (int a = 1; a <= 100; a++) { if (Zellen[a-1] == true) Anzahl++; } System.out.print ("Anzahl offener Tueren: "); System.out.print(Anzahl);
Mir hat die Aufgabe sehr gut gefallen und ich bin auch ein wenig stolz hier eine eigene (wie ich finde deutlich einfachere)
Lösung präsentieren zu können. Ich bin ein absoluter Anfänger. Variablennamen sind aber zugegebenermaßen nicht sehr schön. Ich wollte noch den Lösungswert anfügen, da ich um meine Lösung zu überprüfen eine Lösung von hier in mein Eclipse kopieren musste.. Er ist 10
C#-Code
Lösung präsentieren zu können. Ich bin ein absoluter Anfänger. Variablennamen sind aber zugegebenermaßen nicht sehr schön. Ich wollte noch den Lösungswert anfügen, da ich um meine Lösung zu überprüfen eine Lösung von hier in mein Eclipse kopieren musste.. Er ist 10

public class OffeneTueren { public static void main(String[] args) { int offenetueren = 0; boolean[] array = new boolean[100]; for (int k = 0; k < array.length; k++) { array[k] = true; } for (int i = 2; i <= 100; i++) { for (int z = 1; z < 100; z++) { int u = i * z - 1; if (u < 100) { array[u] = !array[u]; } } } for (int v = 0; v < 100; v++) { if (array[v] == true) { offenetueren++; } } System.out.print("Es sind" + offenetueren + "offene Tueren."); } }