Java und Binomialkoeffizient

Diskutiere das Thema Java und Binomialkoeffizient im Forum MacUser Bar.

  1. fjordschritt

    fjordschritt Thread Starter Mitglied

    Beiträge:
    15.008
    Zustimmungen:
    1.651
    Mitglied seit:
    21.05.2008
    Guten Abend,

    bin etwas verzweifelt. Komme nicht weiter bei der Programmierung von einem Programm. Es soll den Binomialkoeffizient berechnen. Habe auch schon etwas erstellt, jedoch ist das Programm fehlerhaft.

    Hoffe, dass hier ein paar User unter uns sind, die so etwas können. Würde gern ein zwei Fragen loswerden zu meinem geschriebenem Programm.
     
  2. tafkas

    tafkas Mitglied

    Beiträge:
    3.406
    Zustimmungen:
    325
    Mitglied seit:
    17.09.2005
    Dann poste doch einfach mal deinen Source-Code.
     
  3. scsimodo

    scsimodo Mitglied

    Beiträge:
    829
    Zustimmungen:
    16
    Mitglied seit:
    19.03.2005
    Besteht nicht u.a. der Sinn der Übung darin, den Fehler selbst zu finden und daraus etwas zu lernen? Falls nicht, wäre es von Vorteil, wenn Du der versammelten Gemeinschaft Dein Werk im Quellcode mal präsentieren würdest. Hier ist zwar viel möglich, Hellsehen kann hier aber keiner... Und warum stellst Du die beiden Fragen nicht, wenn die dir doch schon so unter den Nägeln brennen?

    Ich liebe solche Posts! "Ich habe ein Problem, nenne aber keine Details und ausserdem habe ich zwei Fragen. Die sage ich euch aber nicht". Herr, schmeiss Hirn vom Himmel :hamma:
     
  4. fjordschritt

    fjordschritt Thread Starter Mitglied

    Beiträge:
    15.008
    Zustimmungen:
    1.651
    Mitglied seit:
    21.05.2008
    Code:
    import javax.swing.JOptionPane;
    public class BinomialCoefficient {
    public static int calculateBinomialCoefficient(int n, int k){
    
       public static void main(String args[])
       {
          int k = 0;/*Zahl k*/
          int n = 0;/*Zahl n über*/
          int i;/*Zähler*/
          int u;/*Hilfvariable*/
          int g;/**/
          int gfak=1;
          int NueberK=0;/*N ueber k*/
          int nfak=1;
          int kfak=1;
          JOptionPane.showInputDialog("Geben sie eine Zahl für n ein");
          do
          {
             JOptionPane.showInputDialog("Bitte geben sie eine Zahl für k ein die nicht größer als n ist");
             if(k>n)
             JOptionPane.showMessageDialog(null, "Fehler geben sie einen kleiner Werte als n ein");
          }   while(k>n);
          g=n-k;
          JOptionPane.showMessageDialog(null, "ihr g lautet:"+g);
          for(i=1;i<=g;i++)
          {
          	gfak=gfak*i;
          }	JOptionPane.showMessageDialog(null, "Ihr gfak lautet:"+gfak);
          for(i=1;i<=n;i++)
          {
    
          	nfak=nfak*i;
          }	JOptionPane.showMessageDialog(null, "nfak lautet:"+nfak);
          for(i=1;i<=k;i++)
          {
          	kfak=kfak*i;
          }	JOptionPane.showMessageDialog(null, "kfak=:"+kfak);
          NueberK=(nfak/(kfak*gfak));
          JOptionPane.showMessageDialog(null, "Ihr NueberK lautet:"+NueberK);
        }
    }
    Muss noch mal bei der Berechnung gucken, die stimmt noch nicht ganz.
    Der einzige Fehler, der angezeigt wird ist: missing return statement. Sollte ich doch aber eigtl schon gesetzt haben.
     
  5. Eden

    Eden Mitglied

    Beiträge:
    152
    Zustimmungen:
    2
    Mitglied seit:
    15.11.2006
    deine main steht innerhalb deiner calculateBinomialCoefficient

    ein return machste auch nicht... (taucht ja nirgends das schlüsselwort return auf)

    edit: irgenwie fehlt auch noch die schließende klammer der calculateBinomialCoefficient methode :kopfkratz:

    so ist es wenigstens ausführbar, allerdings habe ich die logik nicht überprüft:
    Code:
    import javax.swing.JOptionPane;
    public class BinomialCoefficient {
    
    
        public static void main(String args[]){calculateBinomialCoefficient();}
    
    
    
       public static void calculateBinomialCoefficient(){
          int k = 0;/*Zahl k*/
          int n = 0;/*Zahl n über*/
          int i;/*Zähler*/
          int u;/*Hilfvariable*/
          int g;/**/
          int gfak=1;
          int NueberK=0;/*N ueber k*/
          int nfak=1;
          int kfak=1;
          JOptionPane.showInputDialog("Geben sie eine Zahl für n ein");
          do
          {
             JOptionPane.showInputDialog("Bitte geben sie eine Zahl für k ein die nicht größer als n ist");
             if(k>n)
             JOptionPane.showMessageDialog(null, "Fehler geben sie einen kleiner Werte als n ein");
          }   while(k>n);
          g=n-k;
          JOptionPane.showMessageDialog(null, "ihr g lautet:"+g);
          for(i=1;i<=g;i++)
          {
          	gfak=gfak*i;
          }	JOptionPane.showMessageDialog(null, "Ihr gfak lautet:"+gfak);
          for(i=1;i<=n;i++)
          {
    
          	nfak=nfak*i;
          }	JOptionPane.showMessageDialog(null, "nfak lautet:"+nfak);
          for(i=1;i<=k;i++)
          {
          	kfak=kfak*i;
          }	JOptionPane.showMessageDialog(null, "kfak=:"+kfak);
          NueberK=(nfak/(kfak*gfak));
          JOptionPane.showMessageDialog(null, "Ihr NueberK lautet:"+NueberK);
        }
     }
    
     
  6. tafkas

    tafkas Mitglied

    Beiträge:
    3.406
    Zustimmungen:
    325
    Mitglied seit:
    17.09.2005
    Ich hätte das berechnen den Binomialkoeffizienten in eine eigene Methode geworfen
    Code:
    public long binomialCoefficient(int n, int k) {
            long bin = 1;
            
            int m = n - k;
            if (k < m) {
                k = m;
            }
            
            for (int i = n, j = 1; i > k; i--, j++) {
                bin = bin * i / j;
            }
            
            return bin;
        }
    Das ganze dann allerdings in eine Klasse getan. Bei uns an der Universität haben wir gleich immer alles Objekt-orientiert gesehen.
     
  7. fjordschritt

    fjordschritt Thread Starter Mitglied

    Beiträge:
    15.008
    Zustimmungen:
    1.651
    Mitglied seit:
    21.05.2008
    So, hab das mal etas umgeformt. Jetzt ist das Programm ausführbar. Leider muss ich noch mal bei der Berechnung etwas nachgucken. Die stimmt noch nicht ganz. Gebe zB 6 über 3 ein und eigtl müsste ja 20 rauskommen. Er gibt mir 1 aus. Sollte aber nicht mehr groß das Problem sein.

    Was eben dabei schwierig war, das einzuhalten, dass n über k = (n-1 über k-1) + (n-1 über k)

    Vielen Dank!
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Java in Winebottler MacUser Bar 19.07.2015
Foto Schl*cker/Java mit Safari, Firefox und 10.6.1 MacUser Bar 08.11.2009
Java und html ZusammenFassung(html-SoftWare) MacUser Bar 11.07.2008
Bitte nochmals um Java Hilfe!!! MacUser Bar 09.02.2008
Java Applet runterladen MacUser Bar 31.12.2007
Nette Java Spielerei MacUser Bar 29.10.2006
Favourite Handy-Games (Java) MacUser Bar 27.01.2006
Webcam mit Webzugriff über JAVA MacUser Bar 14.06.2005
Seltsame Zeichen im Java-Chat MacUser Bar 20.02.2004
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite weitersurfst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...