C# :: Aufgabe #101

6 Lösungen Lösungen öffentlich

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

Lösungen:

vote_ok
von eulerscheZhl (5230 Punkte) - 07.06.2015 um 09:54 Uhr
Quellcode ausblenden C#-Code
using System;

namespace trainYourProgrammer
{
	class MainClass
	{
		static void Main(string[] args)
		{
			Console.Write ("Anzahl der Reihen: ");
			int lines = int.Parse (Console.ReadLine ());
			int[,] triangle = new int[lines, lines];
			for (int n = 0; n < lines; n++) {
				triangle [n, 0] = 1;
				for (int k = 1; k <= n; k++) {
					triangle [n, k] = triangle [n - 1, k - 1] + triangle [n - 1, k];
				}
			}
			int max = triangle [lines - 1, lines / 2];
			int len = max.ToString ().Length + 2;
			for (int n = 0; n < lines; n++) {
				Console.Write (new string (' ', (lines - n - 1) * len / 2));
				for (int k = 0; k <= n; k++) {
					string s = triangle [n, k].ToString ();
					Console.Write (new string (' ', (len + 1 - s.Length) / 2) + s + new string (' ', (len - s.Length) / 2));
				}
				Console.WriteLine ();
			}
		}
	}
}
1 Kommentar
vote_ok
von Mexx (2370 Punkte) - 09.06.2015 um 09:57 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PascalschesDreieck
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Geben Sie die Anzahl der Reihen an");
            int reihen = Convert.ToInt16(Console.ReadLine());
            List<int[]> dreieck = DreieckErstellen(reihen);
            WriteToConsole(dreieck);
            Console.ReadKey();
        }

        static List<int[]> DreieckErstellen(int reihen)
        {
            List<int[]> dreieck = new List<int[]>();
            dreieck.Add(new int[] { 1 });
            if (reihen > 1)
            {
                int[] lastEntry = new int[] { 1, 1 };
                dreieck.Add(lastEntry);
                for (int i = 3; i <= reihen; i++)
                {
                    int[] entry = new int[i];
                    for (int n = 0; n < i; n++)
                    {
                        if (n - 1 < 0)
                            entry[n] = 1;
                        else
                            if (n + 1 > i - 1)
                                entry[n] = 1;
                            else
                                entry[n] = lastEntry[n - 1] + lastEntry[n];
                    }
                    lastEntry = entry;
                    dreieck.Add(entry);
                }
            }
            return dreieck;
        }

        static void WriteToConsole(List<int[]> dreieck)
        {
            for (int i = 0; i < dreieck.Count; i++)
            {
                foreach (int wert in dreieck[i])
                    Console.Write(wert);
                Console.Write("\n");
            }
        }
    }
}
3 Kommentare
vote_ok
von x9eleven (640 Punkte) - 18.06.2015 um 20:11 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class pasDreieck
    {


        static void printPasc(int lines) {            
            // Initialisieren eines 2-dimensionalen Arrays mit der Variablen lines als Inhalt //
            int[,] arrLines = new int[lines,lines];

            // Berechnung des pascalschen Dreiecks //
            for(int i = 0; i < lines; i++)
            {
                for(int j = 0; j < i; j++)
                {
                    if(j == 0 || j == i)
                    {
                        arrLines[i, j] = 1;
                    }
                    else
                    {
                        arrLines[i, j] = arrLines[i - 1, j - 1] + arrLines[i - 1, j];
                        
                    }
                }
            }
          

            // Ausgabe //
            for (int i = 0; i < lines; i++)
            {
                for(int j = 0; j < i; j++)
                {
                    Console.Write(arrLines[i, j] + " ");
                }                
                Console.WriteLine();
            }

    }

        static void Main(string[] args)
        {

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// Der Variablen eingabe wird ein String mit der Funktion Console.ReadLine() übergeben und durch Convert.ToInt32 in ein int umgewandelt//////////////////////////////////////
            ///

            int lines = Convert.ToInt32(Console.ReadLine());

            printPasc(lines);
            Console.ReadKey();
        }
    }
}

vote_ok
von Sormdev (60 Punkte) - 21.06.2015 um 11:54 Uhr
Hab ne Weile gebraucht, war aber eine echt tolle Aufgabe.
Dankeschön!

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Pascalsches_Dreieck
{
    class Program
    {
        static void Main(string[] args)
        {
            //Fordere den Benutzer auf die Zeilenanzahl einzugeben
            Console.WriteLine("Bitte geben Sie die Zeilenanzahl an:");

            //Speichere die Zeilenanzahl und erstelle einen Array für das Dreieck
            int lines = Convert.ToInt32(Console.ReadLine());
            int[,] arr = new int[lines, lines];

            //Berechne das Dreieck
            for (int i = 0; i < lines; i++) //Zeile
            {
                arr[i, i] = 1;
                arr[i, 0] = 1;
                
                for (int j = 1; j < i; j++) //Spalte
                {
                    arr[i, j] = arr[i - 1, j - 1] + arr[i - 1, j];
                }
            }

            Console.WriteLine("");

            //Gebe das Dreieck aus!
            for (int i = 0; i < lines; i++)
            {
                for (int j = 0; j < lines; j++)
                {
                    if (arr[i, j] != 0)
                    {
                        Console.Write(arr[i, j] + " ");
                    }
                    else
                    {
                        Console.Write(" ");
                    }
                }
                Console.WriteLine("");
            }

            Console.Read();
        }
    }
}
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;
        }
    }
}
vote_ok
von jingyophuong (140 Punkte) - 22.09.2015 um 13:42 Uhr
Quellcode ausblenden C#-Code
            do
            {
                Console.Write("geben Sie bitte die Anzahl der Reihen von Pascalsches Reieck: ");
                string Anzahl = Console.ReadLine();
                string folgeString = "";
                int n;
                if (!int.TryParse(Anzahl, out n))
                {
                    Console.WriteLine("Beim Umwandeln ist der Fehler aufgetreten");
                }
                else
                {

                    int[,] folge = new int[n, n]; // Dreieck mit nur Zahlen erstellen
                                                   // ohne Form
                    int erste; int zweite;
                    for (erste = 0; erste < n; erste++)
                    {
                        for ( zweite = 0; zweite <= erste; zweite++)
                        {
                            if (zweite == 0 || zweite == erste)
                            {
                                folge[erste, zweite] = 1;

                            }
                            else
                            {
                                folge[erste, zweite] = folge[erste - 1, zweite - 1] + folge[erste - 1, zweite];
                            }

                           
                        } 
                        
                    }
                    for (int i = 0; i < n; i++)
                    {
                        Console.Write(new string(' ', n-1-i ));
                        for (int j = 0; j <= i; j++)
                        {
                            Console.Write(folge[i, j] + " ");
                        }
                        Console.WriteLine();
                    }

                }
                Console.ReadLine();
            } while (true);

2099296

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.