Programmierung

Pascal'sches Dreieck - Turbo Pascal


 
  1. Aufgabe

    Ausgabe der Kombinationen ohne Wiederholung [ K(Anzahl) aus n(Gesamt) oder n  über k).

    6 aus 49 =                                                (34Bit-Zahl !!!)
    (n) 49          49 * 48 * 47 * 46 * 45 * 44 = 10.068.347.520
    (-) über        ---------------------------------     ------------------- =13.983.816 Kombinationen
    (k) 6              1 *   2 *   3 *   4 *   5 *   6 =                    720

     Das obige Zwischenergebnis dieser relativ kleinen Aufgabe, kann bei einigen
     Programmiersprachen schon zum Überlauf führen.
     z.B. sprengt es schon den Datentyp des Longword (32-Bit) bei C++
     oder LongInt (32-Bit) bei Turbo Pascal.
     In Java kann die Zahl im Datentyp long 64 Bit groß sein (max. 9.223.372.036.854.775.807).
     Einfacher ist es über das Pascalsche Dreieck.

     n=0            1    
     n=1          1  1      
     n=2        1  2  1
     n=3      1  3  3  1
     n=4    1  4  6  4  1
     usw.
                ---------------
     k=      1  2  3  4  5
     usw

  2. Struktogramm

    Pascalsches Dreieck

  3. Quellcode

    { Funktion: Das Pascalsche Dreieck, Kombinationen ohne Wiederholung
      Autor : DG1XPZ
      Sprache : Turbo Pascal 7.0}
    program pascal;
    var k:integer;
    var n:integer;
    const max=62;
     
    function pascalD(k,n: integer):LongInt;
    var i,j: Longint;
    matrix: array[1..max] of array [1..max] of Longint;
    begin
       for i:=1 to n+2 do
       begin 
          matrix[i][1]:=1;
          matrix[1][i]:=1;
       end;
       for j:=1 to n+1 do
       begin
          for i:=1 to n+1 do
          begin
             matrix[j+1][i+1]:=matrix[j+1][i]+matrix[j][i+1];
          end;
       end;
    pascal:=matrix[(n+1)-k][k+1];
    end;

    begin
       Writeln('Das Pascalsche Dreieck.');
       Writeln('Kombinationen ohne Wiederholung ( k aus n)');
       write('Bitte 1. Zahl eingeben (von k aus n) max ');write(max-2);write(':');
       Readln(k);
       write('Bitte 2. Zahl eingeben (von k aus n) max ');write(max-2);write(':');
       Readln(n);
       if (k<=60) and (n<=60) then
       begin
          write('Bei ');write(k);write(' aus ');write(n);
          write(' gibt es ');Write(pascalD(k,n));write(' Kombinationen.');
       end;
    end.


  4. Download pascal.zip

 

http://www.counter-service.de http://www.counter-service.de

Home
uebermich
Programmierung
Amateurfunk
Elektronik
Download
Links
E-Mail
Gästebuch/Meckerecke
Counter-DG1XPZ