Advertisement
Guest User

Untitled

a guest
Mar 1st, 2015
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.50 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.FlowLayout;
  3. import java.awt.Polygon;
  4. import java.beans.PropertyChangeEvent;
  5. import java.beans.PropertyChangeListener;
  6. import java.util.Properties;
  7. import java.util.concurrent.CompletionException;
  8.  
  9. import javax.swing.JFrame;
  10. import javax.swing.JTable;
  11. import javax.swing.JTextField;
  12.  
  13.  
  14. public class Calculate {
  15.     static JFrame window=new JFrame("Sample");
  16.     static JTable input=new JTable(3,3);
  17.     static int data[][]=new int[3][3];
  18.     static JTextField det=new JTextField("0",10);
  19.     public static void main(String[] args) {
  20.        
  21.         window.setSize(400,400);
  22.         window.setDefaultCloseOperation(3);
  23.         window.setLayout(new FlowLayout(0));
  24.        
  25.         window.add(input);
  26.         input.addPropertyChangeListener(inputCorrector);
  27.         det.setEditable(false);
  28.        
  29.         window.add(det);
  30.         window.setVisible(true);
  31.     }
  32.    
  33.     static void calcDeterm(){
  34.         Polynom pol[][]=new Polynom[3][3];
  35.         for(int i=0;i<3;i++)
  36.             for(int j=0;j<3;j++)
  37.                 if(i==j)pol[i][j]=new Polynom(new double[]{data[i][i],-1});
  38.                 else pol[i][j]=new Polynom(new double[]{data[i][j]});
  39.         pol[0][0]=pol[0][0].multiply(pol[1][1].multiply(pol[2][2]).add(pol[2][1].multiply(pol[1][2]).multiply(new Polynom(new double[]{-1}))));
  40.         pol[0][1]=pol[0][1].multiply(pol[1][0].multiply(pol[2][2]).multiply(new Polynom(new double[]{-1})).add(pol[2][0].multiply(pol[1][2])));
  41.         pol[0][2]=pol[0][2].multiply(pol[1][0].multiply(pol[2][1]).add(pol[1][1].multiply(pol[2][0]).multiply(new Polynom(new double[]{-1}))));
  42.         String s=pol[0][0].add(pol[0][1]).add(pol[0][2]).toString();
  43.         det.setColumns(s.length());
  44.         det.setText(s);
  45.     }
  46.    
  47.     static PropertyChangeListener inputCorrector=new PropertyChangeListener() {
  48.         public void propertyChange(PropertyChangeEvent arg0) {
  49.             if(input==null)return;
  50.             for(int i=0;i<3;i++)
  51.                 for(int j=0;j<3;j++)
  52.                     if(null!=input.getModel().getValueAt(i,j))
  53.                         data[i][j]= Integer.parseInt((String) input.getModel().getValueAt(i,j));
  54.  
  55.             for(int i=0;i<3;i++){
  56.                 for(int j=0;j<3;j++)
  57.                     System.out.print(data[i][j]+"  ");
  58.                 System.out.println("");
  59.             }
  60.             calcDeterm();
  61.         }
  62.     };
  63.  
  64. }
  65. class Polynom {
  66.     double [] values;
  67.     Polynom(double[] arg){
  68.         values=arg;
  69.     }
  70.    
  71.     public String toString(){
  72.         String poly="";
  73.         if(values[0]!=0)poly=values[0]+poly;
  74.         for(int i=1;i<values.length;i++){
  75.             if(values[i]!=0)
  76.                 poly=values[i]+"x^"+i+" "+poly;
  77.         }
  78.        
  79.         return poly;
  80.     }  
  81.    
  82.     Polynom multiply(Polynom arg){
  83.         double[] value = new double[arg.values.length + values.length];
  84.         for(int i=0;i<arg.values.length;i++)
  85.             for(int j=0;j<values.length;j++){
  86.                 value[i+j]+=arg.values[0]*values[j];
  87.             }
  88.         return new Polynom(value);
  89.     }
  90.    
  91.     Polynom add(Polynom arg){
  92.         double[] value=new double[Math.max(arg.values.length, values.length)];
  93.         for(int i=0;i<values.length;i++){
  94.             if(arg.values.length <= i )value[i]=values[i];
  95.             else if(values.length <= i)value[i]=arg.values[i];
  96.             else value[i]=values[i]+arg.values[i];
  97.         }
  98.         return new Polynom(value);
  99.     }
  100.    
  101.     Object roots(){
  102.         if(values.length<2)return null;
  103.         else if(values.length==2)return -values[0]/values[1];
  104.         else if(values.length == 3){
  105.             if(values[1]*values[1]-4*values[0]*values[2] <0)
  106.                 return null;//Комплексный корень
  107.             else if(values[1]*values[1]-4*values[0]*values[2]==0)return (-values[1]/2/values[0]);
  108.             else return new double[]{(-values[1]+Math.sqrt(values[1]*values[1]-4*values[0]*values[2]))/2/values[0], (-values[1]-Math.sqrt(values[1]*values[1]-4*values[0]*values[2]))/2/values[0]};
  109.            
  110.         }
  111.         return null;
  112.     }  
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement