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 ;
}
}
}
...
Матрицы (C++)
Дано две квадратические матрицы A и D, (n = 3) . Вычислить Матрицу:
C = A * B + D * A
, где элементы матрицы B делаются за формулою (на картинке)
Умножения матрицы на матрицу сделать у виде подпрограммы.
единственное что не ясно с задачи - как сделать матрицу B ? :confused:
думал так вот:
Код:
но єто маразм какой то получаеться:D
Так вроде всё нормально. В чём проблема?
Цитата: 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 ; // <<< вот тут и компилятор и вылетает !
}
}
}
{
for (int j = 0 ; j < n; j++)
{
if ( i < j)
{
arrayB[j] = 1 / i + j -1 ;
}
else
{
arrayB[j] = 1 / i + j + 1 ; // <<< вот тут и компилятор и вылетает !
}
}
}
arrayB[j] = 1 / ( i + j - 1 )
arrayB[j] = 1 / ( i + j + 1 )
Вылетает не компилятор, а программа потому что деление на ноль происходит.
И ещё, у людей индексы считаются с единицы, а в Ц с нуля. Хотя это вопрос к методичке. Судя по формулам, скорее всего тоже с нуля считаются.
Vov4ick все равно вылетает ....:confused: только уже компилятор указывает на arrayB[j] = 1 / ( i + j - 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 ;
}
}
}
{
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 как быть?
Код:
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);
}
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);
}
В данном случае главную диагональ заполняем нулями, если получается деление на ноль, то тоже присваеваем ноль.