Задача. Даны две целочисленные квадратные матрицы порядка 6.
Найти последовательность из нулей и единиц [latex]b_{1}[/latex], \ldots, [latex]b_{6}[/latex] такую, что [latex]b_{i} = 1[/latex], когда
б) все элементы i-х строк первой и второй матриц
отрицательны;
[latex]M_1[/latex] | [latex]M_2[/latex] | [latex]b_1, \dots, b_6[/latex] |
-2 -3 -4 -5 -6 -7 1 2 3 3 3 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 |
-1 -2 -3 -6 -7 -2 1 2 2 2 2 2 4 4 4 4 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 |
1 0 0 0 0 0 |
-7 -31 -4 -9 -8 -7 5 3 2 9 5 3 -4 -1 -1 -2 -8 -5 1 2 1 3 1 1 1 7 1 1 4 1 1 23 1 8 1 1 |
-1 -2 -3 -6 -7 -2 1 2 2 2 2 2 -4 -9 -4 -12 -7 -4 3 1 1 5 1 1 6 13 11 1 19 1 24 1 5 7 1 9 |
1 0 1 0 0 0 |
4 -37 12 -5 8 -7 -16 -8 -9 -3 -2 -3 -4 -1 -1 -2 -8 -5 -3 -2 -1 -2 -1 -7 3 7 1 1 4 1 1 23 1 8 8 1 |
-1 -2 -3 -6 -7 -2 -1 -2 -2 -2 -2 -2 -8 7 -4 15 -6 -4 -3 -7 -1 -5 -22 -1 6 13 11 12 19 1 24 1 5 7 1 11 |
0 1 0 1 0 0 |
Код программы:
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 |
#include <iostream> using namespace std; int main() { const int n=6; int M1[n][n], M2[n][n], B[n]; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { cin >> M1[i][j]; //Чтение из стандартного потока. } } for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { cin >> M2[i][j]; //Чтение из стандартного потока. } } for(int i=0; i<n; i++) { B[i]=1; } for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if (M1[i][j]>=0 || M2[i][j]>=0) { B[i]=0; break; } } } for(int i=0; i<n; i++) { cout << B[i]<< " "; } return 0; } |
По условию задачи необходимо вывести последовательность [latex]b_{1}, \ldots, b_{6}[/latex] из «1» и «0», при том «1» выводится если в соответствующих строках двух вводимых с клавиатуры матриц все элементы отрицательные. Для этого опишем две матрицы порядка 6 на 6 и два счетчика. Затем создадим циклы для ввода элементов матриц. Потом присваиваем элементам последовательности [latex]b_{1}, \ldots, b_{6}[/latex] 1. Затем в цикле при условии, что элементы матрицы не отрицательные присваиваем [latex]B[i][/latex] 0 и выходим из цикла. Если в строке двух матриц не встретилось ни одного числа большего либо равного 0, то [latex]b_{i}[/latex] осталось равным 1. И выводим массив [latex]b[i][/latex].
Для проверки работы программы можно воспользоваться объектом.
Код на 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 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n=6; int []B = new int[n]; int [][]M1 = new int[n][n]; int [][]M2 = new int[n][n]; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { M1[i][j]=in.nextInt(); } } for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { M2[i][j] = in.nextInt(); } } for(int i=0; i<n; i++) { B[i]=1; } for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if (M1[i][j]>=0 || M2[i][j]>=0) { B[i]=0; break; } } } for(int i=0; i<n; i++) { System.out.println(B[i]+" "); } } } |
Замечания идут по нарастающей. Дочитайте до конца перед тем как что-то править.
— 24, 35, 39 — отступы
— Число 6 в 31-й строке — типичный magic number. Их лучше заменять именованными константами.
— Отдельные счётчики для каждой из матриц не нужны. Достаточно одного условия с союзом &&.
— Зачем продолжать внутренний цикл (стр. 26) если встретился хоть один положительный элемент? Если встретился положительный, нужно записать в В число 0 и выйти из цикла при помощи brek.
— Зачем вообще счётчики? Если перед внутренним циклом (стр.25) в B[i] положить 1 и изменять только при встрече положительного элемента (см предыдущее замечание), то единица останется только если ее не стёрли из-за встреченного положительного элемента.
Исправлено.
— Поставьте правильные отступы.
Остальное хорошо.
Т.е. почти хорошо. Я бы посоветовал сделать функцию для ввода матрицы и просто вызвать её дважды — для М1 и М2. Но готов смириться с тем, как это происходит сейчас.
Отступы сделал.
Где?
Простите не заметил кое-что. Теперь отступы есть.
Зачтено.
На всякий случай разберитесь как здесь сделан ввод.