0 / 0 / 4
Регистрация: 21.08.2017
Сообщений: 205
1

Работа с массивами и файлами: поиск столбцов с отрицательными элементами

08.11.2020, 17:15. Показов 499. Ответов 0

Author24 — интернет-сервис помощи студентам
Добрый вечер! Нужно считать исходный массив из файла, составить массив с результатами и записать последний в файл.

Дана матрица А(5Х5). Определить массив Х из 5 элементов, каждый из которых равен 1, если произведение элементов соответствующего столбца больше нуля, и –1 в противном случае.

При тестировании кода возникли проблемы: второй и третий элемент массива результатов почему-то заминусились, а при записи результатов в файл указатель не перешёл на новую строку, хотя символ переноса был дважды добавлен с помощью append. Укажите ошибки и способы их устранения. Работаю в eclipse.

Код класса:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package com.lab2;
 
import java.util.InputMismatchException;
import java.util.Scanner;
import java.io.*;
 
public class ReadWriteFile {
    private static int n;
    private static int m;
    
    public static int[][] inputSelect () {
        int[][] arr = null;
        int index = -1;
        Scanner scan = new Scanner(System.in);
        System.out.println("Выберите способ ввода массива:");
        System.out.println("0. Из файла");
        System.out.println("1. С клавиатуры");
        index = scan.nextInt();
        switch (index) {
        case 0:
            arr = inputFromFile("C:\\Users\\Владимир\\eclipse-workspace\\myMatrix.TXT");
            break;
        case 1:
            arr = inputFromKeyboard();
            break;
        default:
            System.out.println("Неверный ввод!");
        }
        scan.close();
        return arr;
    }
    
    public static int[][] inputFromFile(String path) {
        int[][] arr = null;
        try {
            try (Scanner in = new Scanner(new File(path))) {
                n = in.nextInt();
                m = in.nextInt();
                arr = new int[n][m];
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < m; j++) {
                        arr[i][j] = in.nextInt();
                    }
                }
                in.close();
            }
        } catch (FileNotFoundException e) {
        System.out.println("Ошибка " + e + "! файл " + path + " не найден!");
        } catch (InputMismatchException e) {
        System.out.println("Ошибка " + e + "! Несоответствие типов данных!");
        }
        return arr;
    }
    
    public static int[][] inputFromKeyboard() {
        int[][] arr = null;
        Scanner scan = new Scanner(System.in);
        System.out.println("Укажите количество строк массива:");
        n = scan.nextInt();
        System.out.println("Укажите количество столбцов массива:");
        m = scan.nextInt();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                System.out.println("Введите элемент " + i + "-й строки " + j + "-го столбца:");
                arr[i][j] = scan.nextInt();
            }
        }
        scan.close();
        return arr;
    }
    
    public static void outArray(int[][] array) {
        System.out.println("Вывод исходного массива:");
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if(j == m-1) {
                    System.out.print(array[i][j] + "\n");
                } else {
                    System.out.print(array[i][j] + " ");
                }
            }
        }
    }
    
    public static int[] getResult(int[][] array) {
        int count;
        int[] X = new int[m];
        for (int i = 0; i < m; i++) {
            count = 1;
            for (int j = 0; j < n; j++) {
                count *= array[j][i];
            }
            X[i] = (count >= 0) ? 1 : -1;
        }
        return X;
    }
    
    public static void outResult(int[] X) {
        System.out.println("Вывод результата:");
        for (int i = 0; i < m; i++) {
            if (i == m-1) {
                System.out.print(X[i] + "\n");
            } else {
                System.out.print(X[i] + " ");
            }
        }
    }
    
    public static void writeResult(int[] X) throws Exception {
        System.out.println("Запись результата в файл");
        FileWriter writer = new FileWriter("C:\\Users\\Владимир\\eclipse-workspace\\myMatrix.TXT", true);
        writer.append('\n');
        writer.append('\n');
        for (int i = 0; i < m; i++) {
            if (i == m-1) {
                writer.append(X[i] + "\n");
            } else {
                writer.append(X[i] + " ");
            }
        }
        writer.close();
    }
}
Код основной функции:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.lab2;
 
import java.util.Scanner;
 
public class MainApp {
 
    public static void main(String[] args) throws Exception {
        ReadWriteFile myVar = new ReadWriteFile();
        int[][] myMatrix = myVar.inputSelect();
        myVar.outArray(myMatrix);
        int[] X = myVar.getResult(myMatrix);
        myVar.outResult(X);
        myVar.writeResult(X);
    }
 
}
Результат работы программы:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
Выберите способ ввода массива:
0. Из файла
1. С клавиатуры
0
Вывод исходного массива:
11 24 323 7 2345
42 53 6 234 4
73 84 94 0 3432
45 673 34 98 3245
0 345 5546 4564 6565
Вывод результата:
1 -1 -1 1 1
Запись результата в файл
Файл после записи результатов:
XML
1
2
3
4
5
6
5 5
11 24 323 7 2345
42 53 6 234 4
73 84 94 0 3432
45 673 34 98 3245
0 345 5546 4564 65651 -1 -1 1 1
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2020, 17:15
Ответы с готовыми решениями:

Найти сумму элементов столбцов с отрицательными элементами на главной диагонали.
Дана действительная квадратная матрица порядка n. Найти сумму элементов столбцов с отрицательными...

Удаление строчек и столбцов матрицы заполненных только отрицательными элементами
Здравствуйте! Помогите пожалуйста заставить программу работать правильно! Задание: удалять со...

Создать массив номеров столбцов с отрицательными элементами на главной диагонали
составить программу. без констант! Дана действительная квадратная матрица порядка n. Создать...

Двумерный массив. Найти номера столбцов с отрицательными элементами и отобразить их на экране
Само задание: Ввести двумерный массив E. Найти номера столбцов с отрицательными элементами и...

0
08.11.2020, 17:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2020, 17:15
Помогаю со студенческими работами здесь

Работа с массивами и их элементами
Помогите пожалуйста! Создать массив. При нажатии на кнопку определить количество элементов...

Работа с файлами и массивами
Помогите, пожалуйста, нужно, чтобы прога прочитала таблицу из блокнота ,отсортировала по...

Работа с файлами и массивами
Дан двумерный массив размером n*m. 1. Заменить минимальный по модулю элемент каждого столбца на...

Работа с файлами и массивами
Всем привет, помогите сделать 2 програмки: 1) Нужна програмка каторая бы открывала текс( на...

Работа с файлами и массивами
Доброго времени суток, коллеги! И так, кратко изложу свою проблему. У меня имеется набор файлов с...

Работа с файлами и массивами
Задача состоит в том чтоб считать 30 файлов в каждом файле 24 значения. Посчитать среднее значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru