C# :: Aufgabe #101 :: Lösung #5

6 Lösungen Lösungen öffentlich
#101

Erstellung Pascalsches Dreieck

Anfänger - C# von BlackBird321 - 04.06.2015 um 22:43 Uhr
Schreibe ein Programm, welches das Pascalsches Dreieckwiedergibt.
Das Programm soll die Anzahl der Reihen entgegennehmen und dementsprechend widergeben (Nur halt ohne die Punkte :o)).

Beispiel für 5 Reihen:
....1
...11
..121
.1331
14641
#5
vote_ok
von syzon (410 Punkte) - 12.07.2015 um 00:10 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections;

namespace Pascalsches_Dreieck
{
    class Program
    {
        static void Main(string[] args)
        {
            //Einlesen einer Ganzzahl
            int anzahlZeilen;
            Console.WriteLine("Bitte die Anzahl der Reihen eingeben: ");
            while (!int.TryParse(Console.ReadLine(), out anzahlZeilen))
            Console.WriteLine("Bitte eine Ganzzahl eingeben!");

            //Erstellung + Aufbau Array
            ArrayList values = new ArrayList();
            for (int i =0; i < anzahlZeilen; i++)
            {
                values.AddRange(reihenBerechnung(i));
            }
            
            //Ausgabe
            int counterAnzahlZahlen = 1;
            int counterPositionArray = 0;
            for (int i = 0; i < anzahlZeilen; i++)
            {
                string Line = "";
                //Leerzeichen vor Zahlenreihe
                for (int z = 0; z < anzahlZeilen - i; z++)
                {
                    Line = Line + "  ";
                }
                for (int j = 0; j < counterAnzahlZahlen; j++)
                {
                    Line = Line + Convert.ToString(values[counterPositionArray]) + "   ";
                    counterPositionArray++;
                }
                Console.WriteLine(Line);
                counterAnzahlZahlen++;
            }
            Console.ReadLine();
        }
        
        //Berechnung einer Reihe
        private static ArrayList reihenBerechnung(int reihe)
        {
            ArrayList eineReihe = new ArrayList();
            for (int i = 0; i < reihe + 1; i++)
            {
                eineReihe.Add(BinomialkoeffizientBerechnen(reihe, i));
            }
            return eineReihe;
        }

        //Binomialkoeffizient berechnen
        private static int BinomialkoeffizientBerechnen(int reihe, int spaltenindex)
        {
            if (reihe == 0 && spaltenindex == 0)
            {
                return 1;
            }
            try
            {
                return fak(reihe) / (fak(spaltenindex) * fak((reihe - spaltenindex)));
            }
            catch (Exception)
            {
                return 1;
            }
        }
        
        //Fakultät berechnen
        private static int fak(int zahl)
        {
            for (int i = (zahl - 1); i > 0; i--)
            {
                zahl = zahl * i;
            }
            return zahl;
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben