Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
dani1evich
1 / 1 / 3
Регистрация: 26.09.2016
Сообщений: 19
#1

В заданной матрице найти строки, все элементы которых – нули - C++

03.10.2016, 18:55. Просмотров 297. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
Нужно найти стоки, все элементы которых нули
Подскажите пожалуйста в чем ошибка..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool k;
 
    for (int i(1); i <= n; i++) 
    {
        for (int j(1); j <= n; j++) 
        {
 
            if (A[i][j] == 0)
            {
                k = true;
            }
            else
            {
                k = false;
            }
        }
        if (k = true)
        {
            cout << "Index: " << i;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2016, 18:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос В заданной матрице найти строки, все элементы которых – нули (C++):

В матрице найти количество строк, у которых все нули
В матрице найти количество строк, у которых все нули (с комментариями если...

В матрице найти количество строк, у которых все нули
В матрице найти количество строк, у которых все нули;(через динамический...

Дана целочисленная матрица порядка N. Найти номера строк: все элементы в которых нули; элементы в каждой и
Дана целочисленная матрица порядка N. Найти номера строк: • все элементы в...

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

В заданной матрице найти количество столбцов, элементы которых упорядочены по убыванию
В заданной целочисленной матрице найти количество ее столбцов, элементы которых...

В заданной матрице найти наибольший элемент и попарно перемножить элементы строки на элементы столбца
В данной квадратной матрице найти наибольший элемент и попарно перемножить...

5
VAN0
58 / 58 / 53
Регистрация: 05.05.2013
Сообщений: 150
Завершенные тесты: 1
03.10.2016, 19:02 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    bool k;
    for (int i = 0; i < n; i++) 
    { bool k = true;
        for (int j = 0; j < n; j++) 
        {
 
            if (A[i][j] != 0)
            {
                k = false;
            }
        }
        if (k == true)
        {
            cout << "Index: " << i;
        }
 
    }
1
Maxim Prishchepa
Эксперт С++
1924 / 1036 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
03.10.2016, 19:03 #3
каждый раз переменная k обновляется, т.е. по факту результат будет только лишь последний эллемент.
нужно сделать что-то типа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int i = 0; i <= n; ++i)
{
   bool zeroLine = true;
   for (int j = 0; j <= n; ++j)
   {
       if (A[i][j] != 0) 
       {
           zeroLine = false;
           break;
       }
   }
   if (zeroLine  == true)
   {
     cout << "Index: " << i;
   }
}
т.е. для каждой строки создаете логическую переменную и считаете, что по умолчанию у вас строка "нулевая", дальше начинаете проверять элементы строки, если в строке попадается значение отличное от нуля - то переменную переводите в состояние "лож" и выходите из цикла (т.к. дальше гонять его смысла уже нет). ну и в конце проверка, если строка нулевая - вывести индекс.
1
dani1evich
1 / 1 / 3
Регистрация: 26.09.2016
Сообщений: 19
03.10.2016, 19:06  [ТС] #4
Спасибо большое, все стало понятно!)
0
Maxim Prishchepa
Эксперт С++
1924 / 1036 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
03.10.2016, 19:09 #5
да... и еще, у вас в последней проверке ошибка, там используется оператор присваивания вместо логического оператора...

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

if (true = k) на такую запись компилятор ругнется и даст понять, что то-то не так... в то время как на
if (k = true) - все замечательно сработает и условие будет всегда выполняться...

так что я не устану повторять, йода стайл не зло, а добро, особенно для начинающих ;-)
1
dani1evich
1 / 1 / 3
Регистрация: 26.09.2016
Сообщений: 19
03.10.2016, 19:13  [ТС] #6
хорошее замечание, я запомню))
0
03.10.2016, 19:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2016, 19:13
Привет! Вот еще темы с решениями:

Определить, есть ли в матрице строки, все элементы которых равны нулю, за исключением последнего
Помогите решить задачу. Задана матрица Am*n. Определить, есть ли в ней строки,...

Заменить в матрице все элементы, большие от 10, на нули
составьте программу замены в прямоугольном массиве А всех элементов, большие...

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

В заданной матрице найти все положительные нечётные числа строки, у которой второй элемент не кратен 3
Доборого времени суток! Ребя помогите пожалуйста, нужно переделать код. Мне...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru