Загрузка данных


package pr;

import java.io.*;
import java.util.*;

class Matrix {
    private final int[][] data;
    private final int rows;
    private final int cols;

    // Конструктор
    public Matrix(int rows, int cols) {
        this.rows = rows;
        this.cols = cols;
        data = new int[rows][cols];
    }

    // Чтение матрицы из файла
    public void readFromFile(String filename) throws IOException {
        try (Scanner sc = new Scanner(new File(filename))) {
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
                    if (sc.hasNextInt()) {
                        data[i][j] = sc.nextInt();
                    } else {
                        throw new IOException("Недостаточно данных в файле для заполнения матрицы");
                    }
                }
            }
        }
    }

    // Вывод матрицы в терминал
    public void printToTerminal() {
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                System.out.print(data[i][j] + "\t");
            }
            System.out.println();
        }
    }

    // Функция: возвращает вектор по условию
    public int[] columnVector() {
        int[] result = new int[cols];
        for (int j = 0; j < cols; j++) {
            boolean hasPositive = false;
            for (int i = 0; i < rows; i++) {
                if (data[i][j] > 0) {
                    hasPositive = true;
                    break;
                }
            }
            result[j] = hasPositive ? 0 : 1;
        }
        return result;
    }

    // Процедура: замена отрицательных на -1, положительных на 1
    public void normalizeSigns() {
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                if (data[i][j] < 0) {
                    data[i][j] = -1;
                } else if (data[i][j] > 0) {
                    data[i][j] = 1;
                }
            }
        }
    }

    // Запись матрицы в файл
    public void writeToFile(String filename) throws IOException {
        try (PrintWriter pw = new PrintWriter(new FileWriter(filename))) {
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
                    pw.print(data[i][j] + " ");
                }
                pw.println();
            }
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        try {
            System.out.print("Введите имя входного файла: ");
            String inputFile = sc.nextLine();

            System.out.print("Введите имя выходного файла: ");
            String outputFile = sc.nextLine();

            System.out.print("Введите число строк: ");
            int rows = sc.nextInt();

            System.out.print("Введите число столбцов: ");
            int cols = sc.nextInt();

            Matrix matrix = new Matrix(rows, cols);
            matrix.readFromFile(inputFile);

            System.out.println("Исходная матрица:");
            matrix.printToTerminal();

            int[] vector = matrix.columnVector();
            System.out.println("Вектор по условию:");
            System.out.println(Arrays.toString(vector));

            matrix.normalizeSigns();
            System.out.println("Матрица после нормализации знаков:");
            matrix.printToTerminal();

            matrix.writeToFile(outputFile);
            System.out.println("Матрица записана в файл " + outputFile);

        } catch (IOException e) {
            System.out.println("Ошибка работы с файлом: " + e.getMessage());
        }
    }
}