Programmierung

Pascal'sches Dreieck - C++


 
  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

    #include<iostream.h>
    // Funktion: Pascalsches Dreieck
    // Kombinationen ohne Wiederholung (k aus n oder n über k)
    // Autor : DG1XPZ
    // Sprache : Borland C++ V5.0
    long pascalD(int k,int n);
    long pMatrix[1002][1002];

    void main(void){
       int n,k;
       cout<<"Pascalsches Dreieck \n";
       cout<<"Kombinationen ohne Wiederholung (k aus n)\n";
       cout<<"Bitte 1. Zahl von \"k aus \"n eingeben: ";
       cin>>k;
       cout<<"Bitte 2. Zahl von \"k aus \"n eingeben: ";
       cin>>n;
       if (k<=1000 && n<=1000){
          cout<<"Bei "<<k<<" aus "<<n<<" gibt es "<<pascalD(k,n)<<" Kombinationen ohne Wiederholung.";
       }
    }

    long pascalD(int k,int n){
       int i,j;
       for (i=0;i<=n;i++){
          pMatrix[i][0]=1;
          pMatrix[0][i]=1;
       }
       for (j=0;j<n;j++){
          for (i=0;i<n-1;i++){
             pMatrix[j+1][i+1]=pMatrix[j+1][i]+pMatrix[j][i+1];
          }
       }
       return(pMatrix[n-k][k]);
    }

  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