Загрузка данных
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());
}
}
}