C# :: Aufgabe #279 :: Lösung #2

5 Lösungen Lösungen öffentlich
#279

ÜBUNG ARRAYS- Wie viele Türen stehen am Ende dieses Algorithmus offen?

Anfänger - C# 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
#2
3 Kommentare
vote_ok
von Waldgeist (2310 Punkte) - 02.02.2020 um 20:39 Uhr
Mein erstes Programm war fehlerhaft!
Hier die richtige Lösung.
Es stehen 10 Türen offen...

Quellcode ausblenden C#-Code
using System;

namespace Tueren
{
    class Program
    {
        static void Main(string[] args)
        {
           
            Console.WriteLine("Programm zur Ermittlung wieviele Türen offen stehen.");
            Console.WriteLine();


            
            bool[] Zellen = new bool[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]))
                        {
                            Zellen[c - 1] = false;                        
                        }
                    else if ((c % d == 0) & (!Zellen[c - 1]))
                    {
                        Zellen[c - 1] =true;
                    }



                }
            }

            int anzahl = 0;
            for (int a = 0; a <= 99; a++)
            {

                if (Zellen[a])
                {
                    anzahl++;
                }
            }
            Console.WriteLine("Anzahl offener Tueren: " + anzahl);
            Console.ReadKey();
        }
        
    }
   
}

                            

Kommentare:

DragStar

Punkte: 2000

160 Aufgaben
9 Lösungen
4 Kommentare

#1
23.03.2020 um 12:00 Uhr
Müssten es nicht 9 Türen sein?
Bei einem Array ist doch die 0 auch eine Stelle, sollte also nicht "bool[] Zellen = new bool[100];" sondern
bool[] Zellen = new bool[99];" heißen.

Oder liege ich falsch?!
post_arrow
617 0

Waldgeist

Punkte: 2310

10 Aufgaben
43 Lösungen
5 Kommentare

#2
23.03.2020 um 12:14 Uhr
Hallo,

ich verlinke hier mal die Lösung von Spiegel Online.

https://www.spiegel.de/wissenschaft/mensch/raetsel-der-woche-wie-viele-schliessfaecher-stehen-offen-a-1041982.html#

Es stehen 10 Türen offen.
Ich hatte am Anfang auf 9 als Ergebnis, bin dann aber auf den obigen Artikel gestoßen und habe mein Programm angepasst.

Grüße
OnkelWaldgeist
post_arrow
618 0

DragStar

Punkte: 2000

160 Aufgaben
9 Lösungen
4 Kommentare

#3
23.03.2020 um 12:48 Uhr
Ah ja. Alles klar. :-)
Danke!
post_arrow
619 0
Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben