Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
кщтеук34
1 / 1 / 0
Регистрация: 27.02.2013
Сообщений: 70
#1

Исправьте ошибку для ленточной стр. симетр. матрицы - C++

03.04.2013, 21:42. Просмотров 260. Ответов 0
Метки нет (Все метки)

Дана разреженная ленточная матрица. Найти матрицу, обратную к ней. Помогите исправить ошибку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "stdafx.h" 
#include <iostream> 
#include <cstdlib>
 
using namespace std; 
 
void Input(double ** array, int size) 
{
    for (int v = 0; v < size; v++)
    { 
        for (int h = 0; h < size; h++)
        { 
            if (abs(v-h) > size/4)
            { 
            cout << "(" << v << ")(" << h << "): 0";// << endl;
            } 
            else
            { 
                cout << "(" << v << ")(" << h << "): ";
                cin >> array[v][h - (v - size/4 - 1)];
            }
        }
    }
 }
int getEl(double ** array, int v, int h, int size) 
{
    if (abs(v-h) > size/4)
    { 
        return 0; 
    } 
    else 
    { 
        return array[v][h - (v - size/4 - 1)]; 
    }
}
void Output(double ** array, int size) 
{   
    cout << endl <<"Matrica:" << endl;
    for(int v = 0; v < size; v++)
    { 
        for(int h = 0; h < size; h++) 
        cout <<getEl(array, v, h, size);
        cout << endl;
    }
}
 
 
 
void inversion(double **A, int N)
{
    double temp;
 
    double **E = new double *[N];
 
    for (int i = 0; i < N; i++)
        E[i] = new double [N];
 
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
        {
            E[i][j] = 0.0;
 
            if (i == j)
                E[i][j] = 1.0;
        }
 
    for (int k = 0; k < N; k++)
    {
        temp = A[k][k];
 
        for (int j = 0; j < N; j++)
        {
            A[k][j] /= temp;
            E[k][j] /= temp;
        }
 
        for (int i = k + 1; i < N; i++)
        {
            temp = A[i][k];
 
            for (int j = 0; j < N; j++)
            {
                A[i][j] -= A[k][j] * temp;
                E[i][j] -= E[k][j] * temp;
            }
        }
    }
 
    for (int k = N - 1; k > 0; k--)
    {
        for (int i = k - 1; i >= 0; i--)
        {
            temp = A[i][k];
 
            for (int j = 0; j < N; j++)
            {
                A[i][j] -= A[k][j] * temp;
                E[i][j] -= E[k][j] * temp;
            }
        }
    }
 
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            A[i][j] = E[i][j];
 
    for (int i = 0; i < N; i++)
        delete [] E[i];
 
    delete [] E;
}
 
int main() 
{
//-------Задаём размерность матрицы
    cout << "Vvedite razmernost': ";
    int size; 
    cin >> size;
//-------Создаём матрицу
    double **array1 = new double *[size]; 
        for (int v = 0; v < size; v++) 
        array1[v] = new double[size/2 + 1]; 
        cout << "Vvedite matricy: " << endl;
        Input(array1, size);
        Output(array1, size);
//--------Сумма элементов
 
inversion(array1, size);
Output(array1, size);
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2013, 21:42     Исправьте ошибку для ленточной стр. симетр. матрицы
Посмотрите здесь:

Исправьте ошибку в заполнении матрицы змейкой - C++
должна получиться матрица вида 5x5 1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 программа работает,...

Исправьте ошибку - C++
2. Задан двумерный массив N x N. Разрешается произвольно переставлять элементы внутри любого столбца. Проверить можно ли выполнив конечное...

Исправьте ошибку - C++
доброе утро, помогите исправить ошибку, строки 9 и 13 #include &lt;stdio.h&gt; #include &lt;math.h&gt; typedef double (*Pfun)(const double, const...

Исправьте ошибку - C++
Исправьте ошибку пожалуйста или подскажите где я допустил ошибку. Программа сортировки массива. вот код, а вот что оно мне выводит: ...

Обратная матрица из разряженной ленточной матрицы - C++
Помогите написать функцию которая принимает массив элементов(матрицу) и размерность &quot;Mult(array1, size);&quot; и строит матрицу обратной ей.... ...

строки, исправьте ошибку( - C++
#include &quot;stdafx.h&quot; #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; int _tmain(int argc,...

Исправьте ошибку, пожалуйста - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; double Yx(double x) { return pow(x, 2) * atan(x); } double...

исправьте маленькую ошибку - C++
подскажите, почему у меня выводит только саму матрицу, а результат - нет? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

Функция, исправьте ошибку - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;time.h&gt; #define...

исправьте ошибку,пожалуйста - C++
Вычислить среднее значение элементов, расположенных в массиве между первым и послед-ним нулевыми элементами. Поменять местами максимальный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru