Обробка елементів матриці (JAVA)

13 лютого 2025
MORENKO OLEKSII
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.*;
import java.util.Random;

public class SortSelectInMatrixApp {


    public static void main(String[] args) throws FileNotFoundException {
        new GrSortSelectInMatrixApp();
    }//end main psvm

    //TODO RANDOMIZE

    public static int rnd(int min, int max)
    {
        return new Random().ints(min, max).iterator().nextInt();
    }//end random

    public static class GrSortSelectInMatrixApp
            extends Frame implements WindowListener
    {

        public void windowOpened(WindowEvent e) {
        }

        public void windowClosed(WindowEvent e) {
        }

        public void windowIconified(WindowEvent e) {
        }

        public void windowDeiconified(WindowEvent e) {
        }

        public void windowActivated(WindowEvent e) {
        }

        public void windowDeactivated(WindowEvent e) {
        }

        public void windowClosing(WindowEvent e) {
            dispose();
            System.exit(0);
        }

        //TODO variable

        public int n = 9;
        public int k = 0;
        public int[][] A = new int[n][n];
        public int[] B = new int[n * n];
        public int[] C = new int[n * n];
        public int[] D = new int[n * n];

        public String ms, t, z, text;

        public File af = new File("A.txt");
        public File bf = new File("B.txt");
        public File cf = new File("C.txt");
        public File otf = new File("data.txt");

        public int RH, RW, minx, miny, maxx, maxy, cx, cy, dx, dy;
        public int x, y, x1, y1, x2, y2, x3, y3, x4, y4;

        public float wt = 1.5f;

        public void paint(Graphics g) {

            Dimension rc = getSize();
            Insets in = getInsets();

            RH = rc.width;
            RW = rc.height;

            minx = in.left;
            maxx = RH - in.right;
            miny = in.top;
            maxy = RW - in.bottom;

            cx = Math.abs(maxx - minx) / 2;
            cy = Math.abs(maxy - miny) / 2;

            dx = dy = 25;

            g.setColor(new Color(4, 28, 237));

            text = "Сортування обраних елементів матриці. Підготував: Моренко Олексій, 10-Мі клас";
            g.setFont(new Font("Trebuchet Ms", Font.BOLD, 19));
            g.drawString(text, minx + 5, miny + 35);

            //TODO init MATRIX and write to File "A.txt"

            ms = text; // todo write File "data.txt"
            ms += "\n\nМатриця A[9][9]:\n";
            k=0;
            try {
                af.createNewFile();
                FileWriter writer = new FileWriter(af);
                text = n + "\n";
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < n; j++)
                    {
                        A[i][j] = rnd(10, 99); //todo randomize

                        if (i == j)
                        {
                            B[k] = A[i][j];
                            C[k] = B[k];
                            D[k] = B[k];
                            k++;
                        }
                        text += A[i][j] + " ";
                    }
                    text += "\n";
                }
                writer.write(text);
                writer.flush();
                writer.close();
                ms += text;
            } catch (IOException e)
            {
                e.printStackTrace();
            }

            ms += "\n\nОбрані елементи:\n";
            try {
                bf.createNewFile();
                FileWriter writer = new FileWriter(bf);
                text = k + "\n";
                for (int i = 0; i < k; i++)
                {
                    text += B[i] + " ";
                }
                writer.write(text);
                writer.flush();
                writer.close();
                ms += text;
            } catch (IOException e)
            {
                e.printStackTrace();
            }

            int min, num, sw;

            for (int i = 0; i < k - 1; i++)
            {
                min = C[i];
                num = i;
                for (int j = i + 1; j < k; j++)
                {
                    if (min > C[j])
                    {
                        min = C[j];
                        num = j;
                    }
                }

                sw = C[i];
                C[i] = min;
                C[num] = sw;
            }

            ///////////////////

            for (int i = 0; i < n - 1; i++)
            {
                min = D[i];
                num = i;
                for (int j = i + 1; j < n; j++)
                {
                    if (min > D[j])
                    {
                        min = D[j];
                        num = j;
                    }
                }

                sw = D[i];
                D[i] = min;
                D[num] = sw;
            }

            ms += "\n\nРезультат сортування за зростанням:\n";
            try {
                cf.createNewFile();
                FileWriter writer = new FileWriter(cf);
                text = k + "\n";
                for (int i = 0; i < k; i++)
                {
                    text += C[i] + " ";
                }
                writer.write(text);
                writer.flush();
                writer.close();

                ms += text;

            } catch (IOException e)
            {
                e.printStackTrace();
            }

            try {
                otf.createNewFile();
                FileWriter writer = new FileWriter(otf);
                writer.write(ms);
                writer.flush();
                writer.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }

/////////////////////////////////////////////////

            Graphics2D g2 = (Graphics2D) g;

            g2.setStroke(new BasicStroke(wt));
            g.setColor(new Color(255, 51, 58));

            text = "Матриця A[9][9]:";
            g.setFont(new Font("Trebuchet Ms", Font.BOLD, 21));
            g.drawString(text, minx + 80, miny + 160);
            g.setColor(new Color(107, 0, 229));

            dx = (maxx - minx) / (2 * n);
            dy = (maxy - miny) / (2 * n);

            x = minx + 20;
            y = miny + 175;

            for (int i = 0; i <= n; i++)
            {
                g.drawLine(x, y + i * dy, x + maxx - 401, y + i * dy);
            }

            for (int i = 0; i <= n; i++)
            {
                g.drawLine(x + i * dx, y, x + i * dx, y + maxy - 320);
            }

            g.setColor(new Color(0, 0, 0));
            g.setFont(new Font("Trebuchet Ms", Font.BOLD, 20));

            x = x + dx / 2 - 17;
            y = y + dy / 2 + 7;

            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    if (i == j) text = " * ";
                    else text = " " + String.valueOf(A[i][j]);
                    g.drawString(text, x + j * dx, y + i * dy);
                }
            }

////////////////////////////////////////////////////////////

            g.setColor(new Color(255, 51, 58));
            g.setFont(new Font("Trebuchet Ms", Font.BOLD, 21));

            text = "Обрані елементи:";
            g.drawString(text, minx + 350, miny + 160);

            g.setColor(new Color(107, 0, 229));

            dx = (maxx - minx) / (3 * n);
            dy = (maxy - miny) / (2 * n);

            x = minx + 490;
            y = miny + 175;

            for (int i = 0; i <= n; i++)
            {
                g.drawLine(x, y + i * dy, x + maxx - 770, y + i * dy);
            }

            for (int i = 0; i <= 1; i++)
            {
                g.drawLine(x + i * dx, y, x + i * dx, y + maxy - 320);
            }

            g.setColor(new Color(0, 0, 0));
            g.setFont(new Font("Trebuchet Ms", Font.BOLD, 20));

            x = x + dx / 2 - 15;
            y = y + dy / 2 + 7;

            for (int i = 0; i < n; i++)
            {
                text = String.valueOf(B[i]);
                g.drawString(text, x + 3, y + i * dy);
            }

////////////////////////////////////////////////////////////

            g.setColor(new Color(255, 51, 58));

            text = "Результати сортування:";
            g.setFont(new Font("Trebuchet Ms", Font.BOLD, 21));
            g.drawString(text, minx + 550, miny + 160);

            g.setColor(new Color(107, 0, 229));

            dx = (maxx - minx) / (3 * n);
            dy = (maxy - miny) / (2 * n);

            x = minx + 660;
            y = miny + 175;

            for (int i = 0; i <= n; i++)
            {
                g.drawLine(x, y + i * dy, x + maxx - 770, y + i * dy);
            }

            for (int i = 0; i <= 1; i++)
            {
                g.drawLine(x + i * dx, y, x + i * dx, y + maxy - 320);
            }

            g.setColor(new Color(0, 0, 0));
            g.setFont(new Font("Trebuchet Ms", Font.BOLD, 20));

            x = x + dx / 2 - 15;
            y = y + dy / 2 + 7;

            for (int i = 0; i < n; i++)
            {
                text = String.valueOf(D[i]);
                g.drawString(text, x + 3, y + i * dy);
            }

        }//end paint

        public GrSortSelectInMatrixApp() throws FileNotFoundException
        {
            super("Обробка даних матриць в графічному режимі.");
            addWindowListener(this);
            setLayout(null);
            setLocation(80, 80);
            setSize(800, 600);
            this.setResizable(false);
            show();
        }//end Project GrSortSelectInMatrixApp()
    }
}
Якщо ви помітили помилку чи неточність, виділіть фрагмент тексту та натисніть Ctrl+Enter.

 

Умови використання матеріалів сайту

Використання матеріалів можливе лише за умови активного гіперпосилання на UaModna ( див. Правила* ). Для генерації коду посилання натисніть на кнопку

Думки, позиції, уподобання та заклики, опубліковані на нашому сайті, є власністю авторів і можуть не співпадати з поглядами редакції uamodna.com