Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Матрицы (C++)

4.7K
03 декабря 2007 года
bobik02
140 / / 11.09.2007
есть задача:

Дано две квадратические матрицы A и D, (n = 3) . Вычислить Матрицу:
C = A * B + D * A
, где элементы матрицы B делаются за формулою (на картинке)
Умножения матрицы на матрицу сделать у виде подпрограммы.


единственное что не ясно с задачи - как сделать матрицу B ? :confused:

думал так вот:
Код:
const int n = 3;
...
for (int i = 0 ; i < n; i++)
  {
     for (int j = 0 ; j < n; j++)
     {
        if ( i < j)
       {
         arrayB[j] = 1 / i + j -1  ;
       }
        else
       {
         arrayB[j] = 1 / i + j + 1 ;
       }
     }
  }
...

но єто маразм какой то получаеться:D
1.6K
03 декабря 2007 года
Vov4ick
476 / / 01.02.2007
Скобки забыл при вычислении элемента матрицы ;-)
Так вроде всё нормально. В чём проблема?
4.7K
03 декабря 2007 года
bobik02
140 / / 11.09.2007
Цитата: Vov4ick
Скобки забыл при вычислении элемента матрицы ;-)
Так вроде всё нормально. В чём проблема?



брр.. какие скобки ? :p

проблема в том, что - я наверное не понял как надо заполнить массив B элементами ...

Код:
for (int i = 0 ; i < n; i++)
  {
     for (int j = 0 ; j < n; j++)
     {
        if ( i < j)
       {
         arrayB[j] = 1 / i + j -1  ;
       }
        else
       {
         arrayB[j] = 1 / i + j + 1 ; // <<< вот тут и компилятор и  вылетает !
       }
     }
  }
1.6K
03 декабря 2007 года
Vov4ick
476 / / 01.02.2007
Вот эти ;-)
arrayB[j] = 1 / ( i + j - 1 )
arrayB[j] = 1 / ( i + j + 1 )
Вылетает не компилятор, а программа потому что деление на ноль происходит.
И ещё, у людей индексы считаются с единицы, а в Ц с нуля. Хотя это вопрос к методичке. Судя по формулам, скорее всего тоже с нуля считаются.
4.7K
03 декабря 2007 года
bobik02
140 / / 11.09.2007
Vov4ick все равно вылетает ....:confused: только уже компилятор указывает на arrayB[j] = 1 / ( i + j - 1 );
4.8K
03 декабря 2007 года
anty
89 / / 29.10.2006
Если i=0,1,.. j=0,1...
то,
при i<j
B[j]=1/(i+j+1)
при i>j
B[j]=1/(i+j+3)
Код:
for (int i = 0 ; i < n; i++)
  {
     for (int j = 0 ; j < n; j++)
     {
        if ( i < j)
       {
         arrayB[j] = 1 / i + j +1  ;
       }
        else
       {
         arrayB[j] = 1 / i + j + 3 ;
       }
     }
  }

Вот только не понятно при i==j как быть?
34K
04 декабря 2007 года
Alhxor
1 / / 03.12.2007
Зачем столько условий то?..
Код:
const int n = 3;
double b[n][n];
int i, j;

for (i = 0; i < n; i++)
{
    b = 0;

    for (j = 0; j < i; j++)
        b[j] = ( i+j == 1 ? 0 : 1./(i+j-1) );

    for (j = i+1; j < n; j++)
        b[j] = 1./(i+j+1);
}

В данном случае главную диагональ заполняем нулями, если получается деление на ноль, то тоже присваеваем ноль.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог