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

3 Lösungen Lösungen öffentlich
#103

Das Tortenproblem mit Tortenstücken ( Möglichkeiten )

Fortgeschrittener - C# von klhlubek19 - 16.07.2015 um 13:50 Uhr
k Kinder erhalten t Torten.
Die Torten sind alle gleich groß, haben aber
verschiedene Geschmacksrichtungen:
a) Ananas, b) Brombeer, c) Chocolate, d) Datteln, e) Erdbeer, usw.
Die Torten werden zunächst je in k Stücke geteilt.
Nun erhält jedes Kind (1: Anna; 2: Bert; 3: Claude; 4: Daphne; ...)
von jeder Torte ein Stück.

Danach beginnen die Kinder zu tauschen, denn vielleicht mögen nicht alle jede
Sorte gleich gut. Beim Tauschen achten die Kinder darauf, dass immer jedes
Kind gleich viele Tortenstücke behält.

Auf wie viele Arten können die Kinder die Tortenstücke nun so verteilen,
dass immer noch alle Kinder gleich viele Stücke haben?
Alle Möglichkeiten sind auszugeben.
#2
3 Kommentare
vote_ok
von niknik (1230 Punkte) - 18.08.2015 um 10:33 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Tortenproblem
{
    class Program
    {
        static void Main(string[] args)
        {
            int anzahlT, anzahlK;
            do
            {
                Console.Clear();
                Console.WriteLine("Wieviele Torten gibt es?");
            } while (!int.TryParse(Console.ReadLine(), out anzahlT) || anzahlT < 0);

            do
            {
                Console.Clear();
                Console.WriteLine("Wieviele Kinder gibt es?");
            } while (!int.TryParse(Console.ReadLine(), out anzahlK) || anzahlK < 0);

            int anzahlStuecke = anzahlK * anzahlT;

            // k - Kinder, 
            // t Torten, 
            // stuecke - Anzahl von Tortenstücken

            // Jedes Kind hat t stücke, es gibt "stuecke" viele Stücke
            // ==> anzahlStuecke!/((anzahlStuecke - anzahlK)! * anzahlK!)

            double anzahlMoeglichkeiten;
            ulong anzahlStueckeFakultaet = 1;

            for (uint i = 1; i <= anzahlStuecke; i++)
            {
                anzahlStueckeFakultaet *= i;
            }

            ulong anzahlStueckeMinusTortenFakultaet = 1;

            for (uint i = 1; i <= (anzahlStuecke - anzahlT); i++)
            {
                anzahlStueckeMinusTortenFakultaet *= i;
            }

            ulong anzahlKFakultaet = 1;

            for (uint i = 1; i <= anzahlK; i++)
            {
                anzahlKFakultaet *= i;
            }

            anzahlMoeglichkeiten = (anzahlStueckeFakultaet) / ((anzahlStueckeMinusTortenFakultaet) * anzahlKFakultaet);

            Console.WriteLine("Es gibt {0} Möglichkeiten die {1} Tortenstücke von {2} Torten auf die {3} Kinder zu verteilen", anzahlMoeglichkeiten, anzahlStuecke, anzahlT, anzahlK);
            Console.ReadLine();
        }
    }
}

Kommentare:

eulerscheZhl

Punkte: 5230

110 Aufgaben
76 Lösungen
64 Kommentare

#1
19.08.2015 um 19:20 Uhr
Und drei Kinder können sich nicht eine Torte teilen?
Die Berechnung ist schon etwas komplizierter als hier dargestellt.
post_arrow
194 0

niknik

Punkte: 1230


54 Lösungen
3 Kommentare

#2
27.08.2015 um 12:02 Uhr
Ich gebe dir recht. Hab wohl zu wenige Werte getestet beim Coden.
Wo kann ich meine Lösung löschen? Ich würde dann vielleicht eine bessere einreichen.
post_arrow
209 0

eulerscheZhl

Punkte: 5230

110 Aufgaben
76 Lösungen
64 Kommentare

#3
27.08.2015 um 12:41 Uhr
Löschen kann hier nur Gustl. Aber es gibt genug fehlerhafte Lösungen, wo in den Kommentaren darauf hingewiesen wird, da kommt es auf die eine denke ich auch nicht mehr an.
post_arrow
211 0
Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben