Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание матриц с помощью библиотеки <math.h> 
V
    Опции темы
SHraybikus
  Дата 5.9.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.9.2008

Репутация: нет
Всего: нет



как можно воспользоваться библиотекой <math.h> что бы создать матрицы? и если можно примером...
PM MAIL WWW ICQ   Вверх
cutwater
Дата 5.9.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 2
Всего: 10



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



--------------------
user posted image
PM MAIL   Вверх
SHraybikus
Дата 5.9.2008, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.9.2008

Репутация: нет
Всего: нет



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


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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



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


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



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

Добавлено через 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 );
    // ...
};

Каждое действие циклами решать
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
SHraybikus
Дата 5.9.2008, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.9.2008

Репутация: нет
Всего: нет



Цитата(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 
PM MAIL WWW ICQ   Вверх
SHraybikus
Дата 5.9.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.9.2008

Репутация: нет
Всего: нет



 smile   smile 
PM MAIL WWW ICQ   Вверх
Rickert
Дата 6.9.2008, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



SHraybikus, в чём проблема-то была?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Acer
Дата 6.9.2008, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: нет
Всего: 8



Думаю в этом
Код

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

PM MAIL   Вверх
W4FhLF
Дата 6.9.2008, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



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


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

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


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Ockonal
Дата 6.9.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

Репутация: нет
Всего: 3



Цитата

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

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

--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
NebelDT
Дата 30.9.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.9.2008
Где: RU

Репутация: -6
Всего: -10



Вот так вот можно делать! 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);
}

PM MAIL WWW YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.