Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Color;
- import java.awt.FlowLayout;
- import java.awt.Polygon;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import java.util.Properties;
- import java.util.concurrent.CompletionException;
- import javax.swing.JFrame;
- import javax.swing.JTable;
- import javax.swing.JTextField;
- public class Calculate {
- static JFrame window=new JFrame("Sample");
- static JTable input=new JTable(3,3);
- static int data[][]=new int[3][3];
- static JTextField det=new JTextField("0",10);
- public static void main(String[] args) {
- window.setSize(400,400);
- window.setDefaultCloseOperation(3);
- window.setLayout(new FlowLayout(0));
- window.add(input);
- input.addPropertyChangeListener(inputCorrector);
- det.setEditable(false);
- window.add(det);
- window.setVisible(true);
- }
- static void calcDeterm(){
- Polynom pol[][]=new Polynom[3][3];
- for(int i=0;i<3;i++)
- for(int j=0;j<3;j++)
- if(i==j)pol[i][j]=new Polynom(new double[]{data[i][i],-1});
- else pol[i][j]=new Polynom(new double[]{data[i][j]});
- 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}))));
- 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])));
- 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}))));
- String s=pol[0][0].add(pol[0][1]).add(pol[0][2]).toString();
- det.setColumns(s.length());
- det.setText(s);
- }
- static PropertyChangeListener inputCorrector=new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent arg0) {
- if(input==null)return;
- for(int i=0;i<3;i++)
- for(int j=0;j<3;j++)
- if(null!=input.getModel().getValueAt(i,j))
- data[i][j]= Integer.parseInt((String) input.getModel().getValueAt(i,j));
- for(int i=0;i<3;i++){
- for(int j=0;j<3;j++)
- System.out.print(data[i][j]+" ");
- System.out.println("");
- }
- calcDeterm();
- }
- };
- }
- class Polynom {
- double [] values;
- Polynom(double[] arg){
- values=arg;
- }
- public String toString(){
- String poly="";
- if(values[0]!=0)poly=values[0]+poly;
- for(int i=1;i<values.length;i++){
- if(values[i]!=0)
- poly=values[i]+"x^"+i+" "+poly;
- }
- return poly;
- }
- Polynom multiply(Polynom arg){
- double[] value = new double[arg.values.length + values.length];
- for(int i=0;i<arg.values.length;i++)
- for(int j=0;j<values.length;j++){
- value[i+j]+=arg.values[0]*values[j];
- }
- return new Polynom(value);
- }
- Polynom add(Polynom arg){
- double[] value=new double[Math.max(arg.values.length, values.length)];
- for(int i=0;i<values.length;i++){
- if(arg.values.length <= i )value[i]=values[i];
- else if(values.length <= i)value[i]=arg.values[i];
- else value[i]=values[i]+arg.values[i];
- }
- return new Polynom(value);
- }
- Object roots(){
- if(values.length<2)return null;
- else if(values.length==2)return -values[0]/values[1];
- else if(values.length == 3){
- if(values[1]*values[1]-4*values[0]*values[2] <0)
- return null;//Комплексный корень
- else if(values[1]*values[1]-4*values[0]*values[2]==0)return (-values[1]/2/values[0]);
- 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]};
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement