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


Автор: SHraybikus 5.9.2008, 19:11
как можно воспользоваться библиотекой <math.h> что бы создать матрицы? и если можно примером...

Автор: cutwater 5.9.2008, 19:41
Можно воспользоваться головой и без библиотеки math
Матрица это двухмерный массив, подумай над этим.

Автор: SHraybikus 5.9.2008, 20:06
Цитата(cutwater @ 5.9.2008,  19:41)
Можно воспользоваться головой и без библиотеки math
Матрица это двухмерный массив, подумай над этим.


ОКей!!в моей программе есть несколько функций, каждая функция отвечает за вычисление матриц пример: 1 функция вычисляет А+В матрицы, вторая A-B, 3-умножение матриц,void main()-у отвечает как выбор над этими действиями т.е. если я ввожу + значит у меня матрицы будут складываться если * то перемножаться и дело в том что мне постоянно приходится переписывать в функциях переменные  для матриц заново как можно это упростить? Будьте так любезны подскажите?

Автор: bsa 5.9.2008, 20:28
Ну зачем ты переписываешь переменные совсем непонятно. Сделай функции сложения и вычитания матриц. И их вызывай в зависимости от ввода пользователя.
В math.h нет матриц. там только базовые функции по работе с числами: http://www.cppreference.com/stdmath/index.html
Функции по работе с матрицами нужно писать самостоятельно или использовать сторонние библиотеки (boost::uBLAS, например).

Автор: Ockonal 5.9.2008, 20:43
Попробуй создать свой класс, в конструкторе давать размерность матрицы. Перегрузить операторы +, -, * и т.д.

Добавлено через 58 секунд
Как уже сказали, матрица это двухмерный массив

Добавлено через 13 минут и 20 секунд
Код

class cMatrix {
private:
        int w,h;
    CMatrix m_main[w][h];
public:
    cMatrix( int width, int height );
    ~cMatrix();

    cMatrix operator-( cMatrix &one, cMatrix &two );
    cMatrix operator+( cMatrix &one, cMatrix &two );
    // ...
};

Каждое действие циклами решать

Автор: SHraybikus 5.9.2008, 21:07
Цитата(Ockonal @ 5.9.2008,  20:43)
Попробуй создать свой класс, в конструкторе давать размерность матрицы. Перегрузить операторы +, -, * и т.д.

Добавлено @ 20:44
Как уже сказали, матрица это двухмерный массив

Добавлено @ 20:56
Код

class cMatrix {
private:
        int w,h;
    CMatrix m_main[w][h];
public:
    cMatrix( int width, int height );
    ~cMatrix();

    cMatrix operator-( cMatrix &one, cMatrix &two );
    cMatrix operator+( cMatrix &one, cMatrix &two );
    // ...
};

Каждое действие циклами решать

Большая благодарность Ockonal-у за его поддержку- и за его превосходный ум!!!!
СПС!!!! за славную подсказку!  теперь будет прога действительно упрощенее выглядеть! Буду действовать!  smile   smile  smile 

Автор: SHraybikus 5.9.2008, 21:41
 smile   smile 

Автор: Rickert 6.9.2008, 06:27
SHraybikus, в чём проблема-то была?

Автор: Acer 6.9.2008, 07:19
Думаю в этом
Код

for ( int i = 0; i < 10; i++ ){
    for ( int j = 0; j < 10; j++ ){
        /*
         *  [i,j] - координаты элемента в матрице.
         */
    }
}

Автор: W4FhLF 6.9.2008, 07:37
Цитата(Ockonal @  5.9.2008,  20:43 Найти цитируемый пост)
CMatrix m_main[w][h];


Вообще-то в матрицах первая размерность характеризует строку, а вторая столбец, а не наоборот. 

А вообще в своём классе матрицу лучше хранить непрерывным массивом, а адресовать как (data_ptr + width*row + col), так кеширование при операциях будет работать эффективно. 

Автор: Ockonal 6.9.2008, 12:20
Цитата

Вообще-то в матрицах первая размерность характеризует строку, а вторая столбец, а не наоборот. 

Спасибо... Просто забыл чуток матрицы. Та и это здесь неважно.

Автор: NebelDT 30.9.2008, 17:34
Вот так вот можно делать! smile 
Код

#include <stdio.h>
main()
{
int i=0,j=0,N=0,M=0,K=0,l=0;
float A[20][20];
scanf("%d %d",&N,&M);
for(i=0;i<N;i++){
  for(j=0;j<M;j++){
     scanf("%d",&A[i][j]);
}}
for(i=0;i<N;i++){
   l=0;
   for(j=0;j<M;j++){
      if(A[i][j]>0){l++;}
      if(l==M){K++;}
}}
printf("%d",K);
return (0);
}

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