Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Вычислялить кол-во ненулевых элементов матрце С++


Автор: Tinako 18.12.2013, 22:44
Доброго времени суток) Нужна помощь с матрицей. Сама матрица nxn есть, а как сделать так, чтобы вычислялось количество ненулевых элементов в ней - не знаю.. Помогите, пожалуйста =(

Автор: Gluttton 18.12.2013, 22:51
Цитата(Tinako @  18.12.2013,  22:44 Найти цитируемый пост)
Доброго времени суток)

И Вам не кашлять!

Цитата(Tinako @  18.12.2013,  22:44 Найти цитируемый пост)
как сделать так, чтобы вычислялось количество ненулевых элементов 


Необходимо объявить в глобальном пространстве имен счетчик, который бы описывал количество ненулевых элементов и инициализировать его нулем, затем организовать обход элементов матрицы с помощью вложенных циклов. Глубина вложенности циклов определяется размерностью матрицы. При обходе матрицы необходимо проверять условие на неравенство нулю текущего элемента матрицы, если условие выполняется, то необходимо инкрементировать счетчик.
По завершению обхода, значение счетчика будет соответствовать количеству ненулевых элементов в матрице.

Автор: Tinako 18.12.2013, 23:45
Цитата(Gluttton @ 18.12.2013,  22:51)
Необходимо объявить в глобальном пространстве имен счетчик, который бы описывал количество ненулевых элементов и инициализировать его нулем, затем организовать обход элементов матрицы с помощью вложенных циклов. Глубина вложенности циклов определяется размерностью матрицы. При обходе матрицы необходимо проверять условие на неравенство нулю текущего элемента матрицы, если условие выполняется, то необходимо инкрементировать счетчик.
По завершению обхода, значение счетчика будет соответствовать количеству ненулевых элементов в матрице.

Я извиняюсь за наглость, но не могли бы вы привести пример кода :3..а то я походу..совсем не знаю, как..

Автор: Gluttton 19.12.2013, 09:17
Код:
Код

#include <iostream>
#include <stdlib.h>



int main (int argc, char * argv [])
{
    constexpr size_t rowCount {3};
    constexpr size_t colCount {3};
    int matrix [rowCount][colCount] = {
        {1, 0, 1},
        {0, 1, 1},
        {0, 1, 0}
    };

    unsigned int nonZeroItemCount {0u};


    for (size_t i = 0; i < rowCount; ++i) {
        for (size_t j = 0; j < colCount; ++j) {
            if (matrix [i][j]) {
                ++nonZeroItemCount;                                                                                                                                                           
            }                                                                                                                                                                                 
        }                                                                                                                                                                                     
    }                                                                                                                                                                                         
                                                                                                                                                                                              
                                                                                                                                                                                              
    std::cout << nonZeroItemCount << std::endl;                                                                                                                                               
                                                                                                                                                                                              
                                                                                                                                                                                              
    return EXIT_SUCCESS;
}


Компиляция:
Цитата

g++ -std=c++11 matrix.cpp -o matrix


Запуск приложения и вывод результата:
Цитата

gluttton@gluttton:~$ ./matrix 
5

Автор: Tinako 19.12.2013, 10:01
Цитата(Gluttton @ 19.12.2013,  09:17)
Код:
Код

#include <iostream>
#include <stdlib.h>



int main (int argc, char * argv [])
{
    constexpr size_t rowCount {3};
    constexpr size_t colCount {3};
    int matrix [rowCount][colCount] = {
        {1, 0, 1},
        {0, 1, 1},
        {0, 1, 0}
    };

    unsigned int nonZeroItemCount {0u};


    for (size_t i = 0; i < rowCount; ++i) {
        for (size_t j = 0; j < colCount; ++j) {
            if (matrix [i][j]) {
                ++nonZeroItemCount;                                                                                                                                                           
            }                                                                                                                                                                                 
        }                                                                                                                                                                                     
    }                                                                                                                                                                                         
                                                                                                                                                                                              
                                                                                                                                                                                              
    std::cout << nonZeroItemCount << std::endl;                                                                                                                                               
                                                                                                                                                                                              
                                                                                                                                                                                              
    return EXIT_SUCCESS;
}

Вроде разобралась) Спасибо :3

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)