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

Найти элементы, расположенные выше побочной диагонали матрицы, которые удовлетворяют условию: k1 ≥ aij ≤ k2

20.03.2019, 13:02. Показов 2332. Ответов 10
Метки нет (Все метки)

Разработать программу, которая среди элементов, расположенных выше побочной диагонали целочисленной матрицы А, находит те элементы, которые удовлетворяют условию: k1 ≥ aij ≤ k2 , где k1, k2 – заданные целые числа, и формирует из них одномерный массив. Значения элементов матрицы А формируются случайным образом, размер матрицы задается. Помогите плиииз.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2019, 13:02
Ответы с готовыми решениями:

Элементы, расположенные выше главной диагонали, рассчитать как обратные им по знаку (aij = -aij)
Помогите написать программу на С++ Матрица вводится с клавиатуры, причем задаются только...

Среди элементов, расположенных ниже главной диагонали матрицы, найти те элементы, которые удовлетворяют условию
8. Среди элементов, расположенных ниже главной диагонали мат¬рицы A(6,6), найти те элементы,...

Среди элементов выше побочной диагонали матрицы найти элементы, удовлетворяющие условию, и занести в массив
Среди элементов, расположенных выше побочной диагонали матрицы N(6,6), найти элементы,...

Заменить нулями все элементы матрицы, расположенные на побочной диагонали и выше
Заменить нулями все элементы , расположенные на побочной диагонали и выше ее матрицы размером 6х6 ,...

10
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
20.03.2019, 13:53 2
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
import java.util.Arrays;
import java.util.Scanner;
 
public class MatrixN {
    public static final int MIN = 0;
    public static final int MAX = 9;
 
    public static void main(String[] args) {
        int size = readConsole("Введите размерность матрицы", 2, 10);
        int[][] matrix = createMatrix(size, MIN, MAX);
        System.out.println("Дана матрица:");
        printMatrix(matrix);
        int[] array = getElementUpDiagonalMatrix(matrix, MAX, MAX);
        System.out.println("Выводим все элементы выше побочной диоганали: " + Arrays.toString(array));
 
        System.out.println("Условие: k1 >= a[i][j] <= k2;");
 
        int kFirst = readConsole("Введите К1", MIN, 1000);
        int kSecond = readConsole("Введите К2", MIN, 1000);
        array = getElementUpDiagonalMatrix(matrix, kFirst, kSecond);
        System.out.println("Ответ: элементы соответствующие условию: " + Arrays.toString(array));
 
    }
 
    private static void printMatrix(int[][] matrix) {
        for (int[] line : matrix) {
            System.out.println(Arrays.toString(line));
        }
    }
 
    private static int readConsole(String text, int min, int max) {
        Scanner read = new Scanner(System.in);
        boolean correct = false;
        int result = 0;
        while (!correct) {
            System.out.print(text + " [" + min + ".." + max + "]: ");
            try {
                result = Integer.parseInt(read.nextLine().trim());
                if (!(correct = result >= min && result <= max)) {
                    System.out.println("Число не удовлетворяет диапазону [" + min + ".." + max + "]. Попробуйте снова...");
                }
            } catch (NumberFormatException e) {
                System.out.println("Вы ввели не число. Попробуйте снова...");
            }
        }
        return result;
    }
 
    private static int[][] createMatrix(int size, int min, int max) {
        int[][] matrix = new int[size][size];
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                matrix[i][j] = (int) (Math.random() * (max - min + 1) + min);
            }
        }
        return matrix;
    }
 
    private static int[] getElementUpDiagonalMatrix(int[][] matrix, int k1, int k2) {
        int[] array = new int[(matrix.length * matrix.length) / 2 - matrix.length / 2];
        int size = matrix[0].length - 2;
        int i = 0;
        int j = 0;
        int count = 0;
        for (int index = 0; index < array.length; index++) {
            if (matrix[i][j] <= k1 && matrix[i][j] <= k2) {
                array[count++] = matrix[i][j];
            }
            if (j < size) {
                j++;
            } else {
                j = 0;
                size--;
                i++;
            }
        }
        return Arrays.copyOf(array, count);
    }
}
вывод:

Java
1
2
3
4
5
6
7
8
9
10
11
12
Введите размерность матрицы [2..10]: 5
Дана матрица:
[2, 9, 9, 7, 2]
[6, 7, 6, 4, 0]
[4, 6, 7, 9, 5]
[1, 5, 9, 8, 3]
[5, 6, 4, 4, 1]
Выводим все элементы выше побочной диоганали: [2, 9, 9, 7, 6, 7, 6, 4, 6, 1]
Условие: k1 >= a[i][j] <= k2;
Введите К1 [0..1000]: 5
Введите К2 [0..1000]: 5
Ответ: элементы соответствующие условию: [2, 4, 1]
1
2433 / 1889 / 475
Регистрация: 17.02.2014
Сообщений: 9,131
20.03.2019, 14:50 3
LCR, вот тут ниже https://www.cyberforum.ru/java... 21367.html
0
0 / 0 / 0
Регистрация: 20.11.2018
Сообщений: 26
21.03.2019, 23:53  [ТС] 4
ArtemFM Спасибо , а можно сделать чтоб столбец и строки вводил пользователь и не ограничивать его.
0
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
22.03.2019, 00:43 5
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
import java.util.Arrays;
import java.util.Scanner;
 
public class MatrixN {
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);
 
        System.out.print("Введите размер матрицы: ");
        int size = read.nextInt();
        int[][] matrix = new int[size][size];
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                System.out.print("Введите значение матрицы M[" + i + "][" + j + "]: ");
                matrix[i][j] = read.nextInt();
            }
        }
 
        System.out.println("Дана матрица:");
        printMatrix(matrix);
        int[] array = getElementUpDiagonalMatrix(matrix, Integer.MAX_VALUE, Integer.MAX_VALUE);
        System.out.println("Выводим все элементы выше побочной диоганали: " + Arrays.toString(array));
 
        System.out.println("Условие: k1 >= a[i][j] <= k2;");
 
        System.out.print("Введите К1: ");
        int kFirst = read.nextInt();
        System.out.print("Введите К2: ");
        int kSecond = read.nextInt();
        array = getElementUpDiagonalMatrix(matrix, kFirst, kSecond);
        System.out.println("Ответ: элементы соответствующие условию: " + Arrays.toString(array));
 
    }
 
    private static void printMatrix(int[][] matrix) {
        for (int[] line : matrix) {
            System.out.println(Arrays.toString(line));
        }
    }
 
    private static int[] getElementUpDiagonalMatrix(int[][] matrix, int k1, int k2) {
        int[] array = new int[(matrix.length * matrix.length) / 2 - matrix.length / 2];
        int size = matrix[0].length - 2;
        int i = 0;
        int j = 0;
        int count = 0;
        for (int index = 0; index < array.length; index++) {
            if (matrix[i][j] <= k1 && matrix[i][j] <= k2) {
                array[count++] = matrix[i][j];
            }
            if (j < size) {
                j++;
            } else {
                j = 0;
                size--;
                i++;
            }
        }
        return Arrays.copyOf(array, count);
    }
}
1
0 / 0 / 0
Регистрация: 20.11.2018
Сообщений: 26
22.03.2019, 15:18  [ТС] 6
блин извини сам не правильно сформулирова что размер матрицы n,m вводил пользователь и проверялось что точно вводит цифры, а если нет, то выводить ошибку и заново повторить, и заполнять матрицу рандомными числами. БОЛЬШОЕ СПАСИБО и ИЗВИНИ
0
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
22.03.2019, 15:40 7
в первом варианте так и есть, только размер матрицы NxN. Потому что иначе как выявить диагональ?
0
0 / 0 / 0
Регистрация: 20.11.2018
Сообщений: 26
22.03.2019, 16:07  [ТС] 8
а можно там ограничение убрать?
0
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
22.03.2019, 16:19 9
Лучший ответ Сообщение было отмечено LCR как решение

Решение

можно:

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
import java.util.Arrays;
import java.util.Scanner;
 
public class MatrixN {
    public static final int MIN = 0;
    public static final int MAX = 9;
 
    public static void main(String[] args) {
        int size = readConsole("Введите размерность матрицы: ");
        int[][] matrix = createMatrix(size, MIN, MAX);
        System.out.println("Дана матрица:");
        printMatrix(matrix);
        int[] array = getElementUpDiagonalMatrix(matrix, MAX, MAX);
        System.out.println("Выводим все элементы выше побочной диоганали: " + Arrays.toString(array));
 
        System.out.println("Условие: k1 >= a[i][j] <= k2;");
 
        int kFirst = readConsole("Введите К1: ");
        int kSecond = readConsole("Введите К2: ");
        array = getElementUpDiagonalMatrix(matrix, kFirst, kSecond);
        System.out.println("Ответ: элементы соответствующие условию: " + Arrays.toString(array));
 
    }
 
    private static void printMatrix(int[][] matrix) {
        for (int[] line : matrix) {
            System.out.println(Arrays.toString(line));
        }
    }
 
    private static int readConsole(String text) {
        Scanner read = new Scanner(System.in);
        boolean correct = false;
        int result = 0;
        while (!correct) {
            System.out.print(text);
            try {
                result = Integer.parseInt(read.nextLine().trim());
                correct = true;
            } catch (NumberFormatException e) {
                System.out.println("Вы ввели не число. Попробуйте снова...");
            }
        }
        return result;
    }
 
    private static int[][] createMatrix(int size, int min, int max) {
        int[][] matrix = new int[size][size];
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                matrix[i][j] = (int) (Math.random() * (max - min + 1) + min);
            }
        }
        return matrix;
    }
 
    private static int[] getElementUpDiagonalMatrix(int[][] matrix, int k1, int k2) {
        int[] array = new int[(matrix.length * matrix.length) / 2 - matrix.length / 2];
        int size = matrix[0].length - 2;
        int i = 0;
        int j = 0;
        int count = 0;
        for (int index = 0; index < array.length; index++) {
            if (matrix[i][j] <= k1 && matrix[i][j] <= k2) {
                array[count++] = matrix[i][j];
            }
            if (j < size) {
                j++;
            } else {
                j = 0;
                size--;
                i++;
            }
        }
        return Arrays.copyOf(array, count);
    }
}
1
0 / 0 / 0
Регистрация: 20.11.2018
Сообщений: 26
02.04.2019, 20:56  [ТС] 10
такой вопрос стал у меня я никак не могу реализовать чтоб min и max вводились с клавиатуры . Они вводятся, но не так работает. Помогите.
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
package test01;
import java.util.Arrays;
import java.util.Scanner;
 
public class MatrixN {
 
        public static  int a;
        public static  int b;
     
        public static void main(String[] args) {
            int size = readConsole("Введите размерность матрицы: ");
            int[][] matrix = createMatrix(size, a, b);
            System.out.println("Дана матрица:");
            printMatrix(matrix);
            int[] array = getElementUpDiagonalMatrix(matrix, a, a);
            System.out.println("Выводим все элементы выше побочной диоганали: " + Arrays.toString(array));
     
            System.out.println("Условие: k1 >= a[i][j] <= k2;");
     
            int kFirst = readConsole("Введите К1: ");
            int kSecond = readConsole("Введите К2: ");
            array = getElementUpDiagonalMatrix(matrix, kFirst, kSecond);
            System.out.println("Ответ: элементы соответствующие условию: " + Arrays.toString(array));
     
        }
     
        private static void printMatrix(int[][] matrix) {
            for (int[] line : matrix) {
                System.out.println(Arrays.toString(line));
            }
        }
     
        private static int readConsole(String text) {
            Scanner read = new Scanner(System.in);
            boolean correct = false;
            int result = 0;
            while (!correct) {
                System.out.print(text);
                try {
                    result = Integer.parseInt(read.nextLine().trim());
                    correct = true;
                } catch (NumberFormatException e) {
                    System.out.println("Вы ввели не число. Попробуйте снова...");
                }
            }
            return result;
        }
     
        private static int[][] createMatrix(int size, int a, int b) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Введите левую границу интервала:");
            while (!sc.hasNextInt())
            {
                //если не целое число
                System.out.println("Необходимо ввести целое число. повторите ввод!");
                sc.next();
            }
            a = sc.nextInt();
            
            
            System.out.println("Введите правую границу интервала:");
            while (!sc.hasNextInt())
            {
                //если не целое число
                System.out.println("Необходимо ввести целое число. повторите ввод!");
                sc.next();
            }
            b = sc.nextInt();
            int[][] matrix = new int[size][size];
            for (int i = 0; i < size; i++) {
                for (int j = 0; j < size; j++) {
                    matrix[i][j] = (int) (Math.random() * (a - b + 1) + b);
                }
            }
            return matrix;
        }
     
        private static int[] getElementUpDiagonalMatrix(int[][] matrix, int k1, int k2) {
            int[] array = new int[(matrix.length * matrix.length) / 2 - matrix.length / 2];
            int size = matrix[0].length - 2;
            int i = 0;
            int j = 0;
            int count = 0;
            for (int index = 0; index < array.length; index++) {
                if (matrix[i][j] <= k2 && matrix[i][j] <= k1) {
                    array[count++] = matrix[i][j];
                }
                if (j < size) {
                    j++;
                } else {
                    j = 0;
                    size--;
                    i++;
                }
            }
            return Arrays.copyOf(array, count);
        }
    }
0
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
03.04.2019, 05:24 11
Что за min и max тебе нужен?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2019, 05:24
Помогаю со студенческими работами здесь

Заменить нулями все элементы матрицы, расположенные на побочной диагонали и выше
Разработать алгоритм методом пошаговой детализации и программу решения задачи , в которой заменить...

Заменить нулями все элементы, расположенные на побочной диагонали матрицы и выше ее
заменить нулями все элементы, расположенные на побочной диагонали и выше ее двумерного...

Заменить все нулевые элементы матрицы, которые стоят на побочной диагонали и выше нее, на 1
Дана квадратная матрица NxN. Заменить все 0 элементы на 1, которые стоят на побочной диагонали и...

Обнулить элементы матрицы, лежащие одновременно выше главной диагонали и выше побочной диагонали
Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие одновременно выше главной...


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

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

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