Обробка елементів матриці (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

Трендовий інтернет-магазин шпалер та фарб
Яким би не був за ціновим сегментом ремонт, не можна обійтися без декоративного оздоблення, яке підвищить зносостійкість поверхонь, підкреслить вибраний стиль, продовжить термін експлуатації приміщень.
Читати більше