Combinacion Sin repeticion ,en java , Ayuda!!!

Iniciado por k3ni9, 7 Marzo 2016, 01:57 AM

0 Miembros y 1 Visitante están viendo este tema.

k3ni9

Hola alguien me ayudaria con mi codigo de combinacion sin repeticion

solo me funciona el caso 2
:V

:laugh: :xD :-\ :P :(



Solo me crea el primero y el segundo caso. como aria el tercer caso?

package permutacioncombinacion;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Csinrepeticion extends JFrame{
  public JButton regresar,info,calcular,reinicio;
  public JLabel n,r,resultado,calculado;
  public JTextField n1,r1;
  public JTextArea area;
  public int mayor=-1;
  public Csinrepeticion (){
  super ();
  configuraVentana();
  incializarComponentes();
  }
  public void configuraVentana(){
  setTitle(".:Combinacion :.");
  setSize(300,480);
  setLocationRelativeTo(null);
  setResizable(false);
  setLayout(null);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
  }
 
 public void incializarComponentes(){
      reinicio = new JButton("Reiniciar");
      reinicio.setBounds(100,175,100,20);
      this.add(reinicio);
      reinicio.addActionListener(new ActionListener(){
      public void actionPerformed (ActionEvent e){
      area.setText("");
      n1.setText("");
      r1.setText("");
      calculado.setText("");
      }
        });
      //**************************
      area = new JTextArea();
      area.setBounds(30,180,260,200);
      area.setBackground( Color.black );
      area.setEditable(false);
      this.add(area);
      JScrollPane scroll = new JScrollPane(area);
      scroll.setBounds(10, 200, 260, 180);
      this.add(scroll);
       //************************
       n = new JLabel ("Numeros a elegir(n)");
       n.setBounds(30,50,120,20);
       this.add(n);
       n1 = new JTextField ();
       n1.setBounds(160,50,120,20);
       this.add(n1);
       n1.addActionListener(new ActionListener(){
       @Override
       public void actionPerformed (ActionEvent e){
           r1.requestFocus();
       }
       });
      //**************************
       r = new JLabel ("Cuantas Formas(r)");
       r.setBounds(30,100,120,20);
       this.add(r);
       r1 = new JTextField ();
       r1.setBounds(160,100,120,20);
       this.add(r1);
       r1.addActionListener(new ActionListener(){
       @Override
       public void actionPerformed (ActionEvent e){
           calcular.requestFocus();
       }
       });
       //**************
       resultado = new JLabel ("Combinaciones          = ");
       resultado.setBounds(30,150,150,20);
       this.add(resultado);
       calculado = new JLabel ("");
       calculado.setBounds(180 , 150 , 120 , 20);
       this.add(calculado);
       calculado.setVisible(false);
       //************************
       info = new JButton ("?");
       info.setBounds(230,5,50,20);
       this.add(info);
       info.addActionListener(new ActionListener(){
           public void actionPerformed (ActionEvent e){
               JOptionPane.showMessageDialog(null,"Permutaciones sin repetición de n elementos (de orden n)\n son los distintos grupos de n elementos distintos que se pueden hacer\n de forma que dos grupos se diferencian únicamente\n en el orden de colocación de los elementos");
           }
           });
       regresar = new JButton ("Cerrar");
       regresar.setBounds(40,240,100,20);
       this.add(regresar);
        regresar.addActionListener(new ActionListener(){
        public void actionPerformed (ActionEvent e){
           PermutacionCombinacion k =new PermutacionCombinacion();
           k.setVisible(true);
           setVisible(false);  
           }
       });
      regresar = new JButton ("Cerrar");
       regresar.setBounds(40,400,100,20);
       this.add(regresar);
       regresar.addActionListener(new ActionListener(){
        public void actionPerformed (ActionEvent e){
           PermutacionCombinacion k =new PermutacionCombinacion();
           k.setVisible(true);
           setVisible(false);  
           }
       });
       calcular = new JButton ("Calcular");
       calcular.setBounds(160,400,100,20);
       this.add(calcular);
       calcular.addActionListener(new ActionListener(){
       public void actionPerformed (ActionEvent e){
           area.setText("");
           double total=1 ,npr, nfactorial = 1,rfactorial = 1;
           int r2;
           Double n2;
           if ("".equals(n1.getText())){
           JOptionPane.showMessageDialog(null,"casiilla 1 \nEscribe un numero ");
           return;
           }
           if ("".equals(r1.getText())){
           JOptionPane.showMessageDialog(null,"casee 2 \nEscribe un numero ");
           return;
           
        }
           try{
           n2 = Double.parseDouble(n1.getText());
           r2 = Integer.parseInt(r1.getText());
           }catch(NumberFormatException x){
           JOptionPane.showMessageDialog(null, "Solo se aceptan numeros :C");
           return;
           }
           if(n2>0 && n2 <31){
          Double  Csinrepeticion = factorial(n2)/(factorial(n2-r2)*factorial(r2));
          calculado.setText(""+Csinrepeticion);
          calculado.setVisible(true);
          int h =0;
          int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};
          int mayor = 0,suma=0;
          switch (r2){
               case 1:
               for(int i = 0 ; i< n2 ;i++){
                 
                       area.setEditable(true);
                       area.setForeground( Color.red );
                       area.append((h)+".- "+arr+"\n");
                       mayor =arr;
                       area.setEditable(false);  
                  }    
               break;
               case 2:
                   int s=1;
               for(int i = 0; i < n2;i++)
                   for(int j =s; j < n2;j++){
                       if(arr!=arr[j]){
                           h++;
                           area.setEditable(true);
                           area.setForeground( Color.blue);
                           area.append((h)+".- "+arr +","+ arr[j]+"\n");
                           mayor=suma;
                           area.setEditable(false);
                        if(j==(n2-1)) {
                            s=s+1;
                        }  
                           
                       }
                   }
              break;
              case 3:
                  int a =1 ,b =2;
                 for(int i = 0; i < n2;i++){
                       for(int j = a; j < n2;j++){
                           b=0;
                       for(int k = b; k < n2;k++){
                           h++;
                       area.setEditable(true);
                       area.setForeground( Color.pink );
                       area.append((h)+".- "+arr +","+ arr[j] +","+ arr[k] + "\n");
                       area.setEditable(false);
                       if(k == (n2-1))
                               a =a+1;
                             
                               
                       }
                       /*if(j == (n2-1))
                           a++;*/
                       
                       }
                       }
                       
              break;
              case 4:
                       for(int i = 0; i < n2;i++){
                       for(int j = 0; j < n2; j++){
                       for(int k = 0; k < n2; k++){
                       for(int l = 0; l < n2 ; l++){
                           
                       
                       if(arr!= arr[j] && arr[j]!=arr[k] && arr[k]!= arr[l] ){
                           if(arr !=arr[l]){
                               if(arr !=arr[k]){
                                   if(arr[j]!=arr[l]){
                       h++;
                       area.setEditable(true);
                       area.setForeground( Color.green );
                       area.append((h)+".- "+arr +","+ arr[j] +","+ arr[k] +","+arr[l]+"\n");
                       area.setEditable(false);}}
                       }}}
                       }
                       }
                       }
                  break;
                 
              default:
                  JOptionPane.showMessageDialog(null,"Casilla 2\nIngresa Numeros en el rango[1,4]");
          }
          }else
           JOptionPane.showMessageDialog(null,"casilla 1 \nIngresa numeros en el rango[1,30]");        
       }
       });
       
  }
        public static  double factorial(double x){
      double nfactorial = 1;
           for( int i = 0 ; i < x; i++){
               nfactorial = nfactorial * (x-i);  
         }
               return (nfactorial);
        }
  public static void main(String[] args) {  
      Csinrepeticion p = new Csinrepeticion();
      p.setVisible(true);
   }  
}