Facebook
From Synaj, 4 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 203
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.io.*;
  6.  
  7. public class Program extends JFrame {
  8.     public Program() {
  9.         super("Kalkulator liczb zespolonych");
  10.         setSize(400, 700);
  11.         setLayout(new GridLayout(13, 1));
  12.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  13.         setVisible(true);
  14.  
  15.         JPanel rez1 = new JPanel();
  16.         rez1.setLayout(new GridLayout(1, 2));
  17.         JLabel rzecz1 = new JLabel("Część rzeczywista z1: ");
  18.         rez1.add(rzecz1);
  19.         JTextField rzecz1Pole = new JTextField();
  20.         rez1.add(rzecz1Pole);
  21.         add(rez1);
  22.  
  23.         JPanel imz1 = new JPanel();
  24.         imz1.setLayout(new GridLayout(1, 2));
  25.         JLabel uro1 = new JLabel("Część urojona z1: ");
  26.         imz1.add(uro1);
  27.         JTextField uro1Pole = new JTextField();
  28.         imz1.add(uro1Pole);
  29.         add(imz1);
  30.  
  31.         JPanel rez2 = new JPanel();
  32.         rez2.setLayout(new GridLayout(1, 2));
  33.         JLabel rzecz2 = new JLabel("Część rzeczywista z2: ");
  34.         rez2.add(rzecz2);
  35.         JTextField rzecz2Pole = new JTextField();
  36.         rez2.add(rzecz2Pole);
  37.         add(rez2);
  38.  
  39.         JPanel imz2 = new JPanel();
  40.         imz2.setLayout(new GridLayout(1, 2));
  41.         JLabel uro2 = new JLabel("Część urojona z2: ");
  42.         imz2.add(uro2);
  43.         JTextField uro2Pole = new JTextField();
  44.         imz2.add(uro2Pole);
  45.         add(imz2);
  46.  
  47.         JLabel info = new JLabel("Obliczenia dla jednej liczby zespolonej wykonywane są dla z1");
  48.         add(info);
  49.  
  50.         JPanel operacje1 = new JPanel();
  51.         operacje1.setLayout(new GridLayout(1, 4));
  52.         JButton dodawanie = new JButton("+");
  53.         operacje1.add(dodawanie);
  54.         JButton odejmowanie = new JButton("-");
  55.         operacje1.add(odejmowanie);
  56.         JButton mnozenie = new JButton("*");
  57.         operacje1.add(mnozenie);
  58.         JButton dzielenie = new JButton("/");
  59.         operacje1.add(dzielenie);
  60.         add(operacje1);
  61.  
  62.         JPanel operacje2 = new JPanel();
  63.         operacje2.setLayout(new GridLayout(1, 4));
  64.         JButton mod = new JButton("MOD");
  65.         operacje2.add(mod);
  66.         JButton arg = new JButton("ARG");
  67.         operacje2.add(arg);
  68.         JButton pt = new JButton("PT");
  69.         operacje2.add(pt);
  70.         JButton pw = new JButton("PW");
  71.         operacje2.add(pw);
  72.         add(operacje2);
  73.  
  74.         JPanel pierwiastek = new JPanel();
  75.         pierwiastek.setLayout(new GridLayout(1,3));
  76.         JButton przycisk = new JButton("Pierwiastek");
  77.         JLabel napis = new JLabel(" stopnia ");
  78.         JTextField stopienPierwiastka = new JTextField();
  79.         pierwiastek.add(przycisk);
  80.         pierwiastek.add(napis);
  81.         pierwiastek.add(stopienPierwiastka);
  82.         add(pierwiastek);
  83.  
  84.         JPanel potega = new JPanel();
  85.         potega.setLayout(new GridLayout(1,3));
  86.         JButton przycisk1 = new JButton("Potęga");
  87.         JLabel napis1 = new JLabel(" o wykładniku ");
  88.         JTextField wykladnikPotegi = new JTextField();
  89.         potega.add(przycisk1);
  90.         potega.add(napis1);
  91.         potega.add(wykladnikPotegi);
  92.         add(potega);
  93.  
  94.         add(new JLabel("MOD - moduł liczby zespolonej"));
  95.         add(new JLabel("ARG - argument liczby zespolonej"));
  96.         add(new JLabel("PT - postać trygonometryczna"));
  97.         add(new JLabel("PW - postać wykładnicza"));
  98.  
  99.         dodawanie.addActionListener(new ActionListener() {
  100.             @Override
  101.             public void actionPerformed(ActionEvent e) {
  102.                 String real1 = rzecz1Pole.getText();
  103.                 String imag1 = uro1Pole.getText();
  104.                 String real2 = rzecz2Pole.getText();
  105.                 String imag2 = uro2Pole.getText();
  106.                 try {
  107.                     double a = Double.parseDouble(real1);
  108.                     double b = Double.parseDouble(imag1);
  109.                     double c = Double.parseDouble(real2);
  110.                     double d = Double.parseDouble(imag2);
  111.                     double rzeczWyniku = a + c;
  112.                     double uroWyniku = b + d;
  113.                     if (uroWyniku < 0.0) {
  114.                         JOptionPane.showMessageDialog(null, "" + rzeczWyniku + uroWyniku + "i");
  115.                     } else {
  116.                         JOptionPane.showMessageDialog(null, "" + rzeczWyniku + "+" + uroWyniku + "i");
  117.                     }
  118.                 } catch (NumberFormatException ex) {
  119.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą");
  120.                 }
  121.             }
  122.         });
  123.  
  124.         odejmowanie.addActionListener(new ActionListener() {
  125.             @Override
  126.             public void actionPerformed(ActionEvent e) {
  127.                 String real1 = rzecz1Pole.getText();
  128.                 String imag1 = uro1Pole.getText();
  129.                 String real2 = rzecz2Pole.getText();
  130.                 String imag2 = uro2Pole.getText();
  131.                 try {
  132.                     double a = Double.parseDouble(real1);
  133.                     double b = Double.parseDouble(imag1);
  134.                     double c = Double.parseDouble(real2);
  135.                     double d = Double.parseDouble(imag2);
  136.                     double rzeczWyniku = a - c;
  137.                     double uroWyniku = b - d;
  138.                     if (uroWyniku < 0.0) {
  139.                         JOptionPane.showMessageDialog(null, "" + rzeczWyniku + uroWyniku + "i");
  140.                     } else {
  141.                         JOptionPane.showMessageDialog(null, "" + rzeczWyniku + "+" + uroWyniku + "i");
  142.                     }
  143.                 } catch (NumberFormatException ex) {
  144.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą");
  145.                 }
  146.             }
  147.         });
  148.  
  149.         mnozenie.addActionListener(new ActionListener() {
  150.             @Override
  151.             public void actionPerformed(ActionEvent e) {
  152.                 String real1 = rzecz1Pole.getText();
  153.                 String imag1 = uro1Pole.getText();
  154.                 String real2 = rzecz2Pole.getText();
  155.                 String imag2 = uro2Pole.getText();
  156.                 try {
  157.                     double a = Double.parseDouble(real1);
  158.                     double b = Double.parseDouble(imag1);
  159.                     double c = Double.parseDouble(real2);
  160.                     double d = Double.parseDouble(imag2);
  161.                     double rzeczWyniku = a * c - b * d;
  162.                     double uroWyniku = b * c + a * d;
  163.                     if (uroWyniku < 0.0) {
  164.                         JOptionPane.showMessageDialog(null, "" + rzeczWyniku + uroWyniku + "i");
  165.                     } else {
  166.                         JOptionPane.showMessageDialog(null, "" + rzeczWyniku + "+" + uroWyniku + "i");
  167.                     }
  168.                 } catch (NumberFormatException ex) {
  169.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą");
  170.                 }
  171.             }
  172.         });
  173.  
  174.         dzielenie.addActionListener(new ActionListener() {
  175.             @Override
  176.             public void actionPerformed(ActionEvent e) {
  177.                 String real1 = rzecz1Pole.getText();
  178.                 String imag1 = uro1Pole.getText();
  179.                 String real2 = rzecz2Pole.getText();
  180.                 String imag2 = uro2Pole.getText();
  181.                 try {
  182.                     double a = Double.parseDouble(real1);
  183.                     double b = Double.parseDouble(imag1);
  184.                     double c = Double.parseDouble(real2);
  185.                     double d = Double.parseDouble(imag2);
  186.                     if(!(c==0.0 && d==0)){
  187.                     double rzeczWyniku = (a * c + b * d) / (c * c + d * d);
  188.                     double uroWyniku = (b * c - a * d) / (c * c + d * d);
  189.                     if (uroWyniku < 0.0) {
  190.                         JOptionPane.showMessageDialog(null, "" + rzeczWyniku + uroWyniku + "i");
  191.                     } else {
  192.                         JOptionPane.showMessageDialog(null, "" + rzeczWyniku + "+" + uroWyniku + "i");
  193.                     }} else {
  194.                         JOptionPane.showMessageDialog(null, "Nie można dzielić przez 0");
  195.                     }
  196.                 } catch (NumberFormatException ex) {
  197.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą");
  198.                 }
  199.             }
  200.         });
  201.  
  202.         mod.addActionListener(new ActionListener() {
  203.             @Override
  204.             public void actionPerformed(ActionEvent e) {
  205.                 String real = rzecz1Pole.getText();
  206.                 String imag = uro1Pole.getText();
  207.                 try {
  208.                     double a = Double.parseDouble(real);
  209.                     double b = Double.parseDouble(imag);
  210.                     JOptionPane.showMessageDialog(null, (a * a + b * b));
  211.                 } catch (NumberFormatException ex) {
  212.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą");
  213.                 }
  214.             }
  215.         });
  216.  
  217.         arg.addActionListener(new ActionListener() {
  218.             @Override
  219.             public void actionPerformed(ActionEvent e) {
  220.                 String real = rzecz1Pole.getText();
  221.                 String imag = uro1Pole.getText();
  222.                 try {
  223.                     double a = Double.parseDouble(real);
  224.                     double b = Double.parseDouble(imag);
  225.                     if (!(a == 0.0 && b == 0.0)) {
  226.                         JOptionPane.showMessageDialog(null, Math.asin(b / (a * a + b * b)));
  227.                     } else {
  228.                         JOptionPane.showMessageDialog(null, "Nie można wyznaczyć argumentu dla 0");
  229.                     }
  230.                 } catch (NumberFormatException ex) {
  231.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą");
  232.                 }
  233.             }});
  234.  
  235.         pt.addActionListener(new ActionListener() {
  236.             @Override
  237.             public void actionPerformed(ActionEvent e) {
  238.                 String real = rzecz1Pole.getText();
  239.                 String imag = uro1Pole.getText();
  240.                 try {
  241.                     double a = Double.parseDouble(real);
  242.                     double b = Double.parseDouble(imag);
  243.                     if(!(a==0.0 && b==0.0)) {
  244.                         double mod = a*a + b*b;
  245.                         double arg = b/(a*a + b*b);
  246.                         JOptionPane.showMessageDialog(null, mod+"(cos"+arg+" " + "+" + " " + "i*sin" + arg + ")");
  247.                     } else {
  248.                         JOptionPane.showMessageDialog(null, "Nie jest możliwe wyznaczenie postaci trygonometrycznej");
  249.                     }
  250.                 } catch (NumberFormatException ex) {
  251.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą");
  252.                 }
  253.             }
  254.         });
  255.  
  256.         pw.addActionListener(new ActionListener() {
  257.             @Override
  258.             public void actionPerformed(ActionEvent e) {
  259.                 String real = rzecz1Pole.getText();
  260.                 String imag = uro1Pole.getText();
  261.                 try {
  262.                     double a = Double.parseDouble(real);
  263.                     double b = Double.parseDouble(imag);
  264.                     if(!(a==0.0 && b==0.0)) {
  265.                         double mod = a*a + b*b;
  266.                         double arg = b/(a*a + b*b);
  267.                         JOptionPane.showMessageDialog(null, mod+"*"+"e^(i*"+arg+")");
  268.                     } else {
  269.                         JOptionPane.showMessageDialog(null, "Nie jest możliwe wyznaczenie postaci wykładniczej");
  270.                     }
  271.                 } catch (NumberFormatException ex) {
  272.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą");
  273.                 }
  274.             }
  275.         });
  276.  
  277.         przycisk.addActionListener(new ActionListener() {
  278.             @Override
  279.             public void actionPerformed(ActionEvent e) {
  280.                 String real = rzecz1Pole.getText();
  281.                 String imag = uro1Pole.getText();
  282.                 try {
  283.                     double a = Double.parseDouble(real);
  284.                     double b = Double.parseDouble(imag);
  285.                     int st = Integer.parseInt(stopienPierwiastka.getText());
  286.                    if(st <= 0) {
  287.                        throw new NumberFormatException();
  288.                    } else if (a==0 && b==0) {
  289.                        JOptionPane.showMessageDialog(null, "0.0");
  290.                    } else {
  291.                        File plik = new File("wynik.txt");
  292.                        boolean x = plik.createNewFile();
  293.                        PrintWriter strumien = new PrintWriter("wynik.txt");
  294.                        plik.deleteOnExit();
  295.                        JOptionPane.showMessageDialog(null,"Sprawdź plik wynik.txt przed zamknięciem kalkulatora");
  296.                        double arg = Math.asin(b/(a*a+b*b));
  297.                        double pierwZMod = Math.pow(a*a+b*b, (double)1/st);
  298.                        double czescRzecz;
  299.                        double czescUro;
  300.                        for (int i = 0; i < st; i++) {
  301.                             czescRzecz = pierwZMod*Math.cos((arg+2*i*Math.PI)/st);
  302.                             czescUro = pierwZMod*Math.sin((arg+2*i*Math.PI)/st);
  303.                             if(czescUro < 0.0) {
  304.                                 strumien.println(czescRzecz + czescUro + "i\n\n");
  305.                             } else {
  306.                                 strumien.println(czescRzecz + "+" + czescUro + "i\n\n");
  307.                             }
  308.                        }
  309.                        strumien.close();
  310.                    }
  311.                 } catch (NumberFormatException ex) {
  312.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą \nlub stopień pierwiastka nie jest liczbą naturalną");
  313.                 } catch (IOException ex1) {
  314.                     JOptionPane.showMessageDialog(null, "Nie można utworzyć pliku");
  315.                 }
  316.             }
  317.         });
  318.  
  319.         przycisk1.addActionListener(new ActionListener() {
  320.             @Override
  321.             public void actionPerformed(ActionEvent e) {
  322.                 String real = rzecz1Pole.getText();
  323.                 String imag = uro1Pole.getText();
  324.                 try {
  325.                     double a = Double.parseDouble(real);
  326.                     double b = Double.parseDouble(imag);
  327.                     int st = Integer.parseInt(wykladnikPotegi.getText());
  328.                     if(st < 0) {
  329.                         throw new NumberFormatException();
  330.                     } else if (st==0) {
  331.                         JOptionPane.showMessageDialog(null, "1.0");
  332.                     } else if (a==0 && b==0) {
  333.                         JOptionPane.showMessageDialog(null, "0.0");
  334.                     } else {
  335.                         double arg = Math.asin(b/(a*a+b*b));
  336.                         double potZMod = Math.pow(a*a+b*b, (double)st);
  337.                         double czescRzecz = potZMod*Math.cos((double)st*arg);
  338.                         double czescUro = potZMod*Math.sin((double)st*arg);
  339.                         if(czescUro < 0.0) {
  340.                             JOptionPane.showMessageDialog(null,czescRzecz + czescUro + "i");
  341.                         } else {
  342.                             JOptionPane.showMessageDialog(null,czescRzecz + "+" + czescUro + "i");
  343.                         }
  344.                     }
  345.                 } catch (NumberFormatException ex) {
  346.                     JOptionPane.showMessageDialog(null, "Któryś z podanych argumentów nie jest liczbą \nlub wykładnik potęgi nie jest liczbą całkowitą dodatnią");
  347.                 }
  348.             }
  349.         });
  350.     }
  351.  
  352.     public static void main(String[] args) {
  353.         EventQueue.invokeLater(new Runnable() {
  354.             @Override
  355.             public void run() {
  356.                 new Program();
  357.             }
  358.         });
  359.     }
  360. }
  361.