Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

03.04.2013, 21:42. Просмотров 267. Ответов 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);
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2013, 21:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исправьте ошибку для ленточной стр. симетр. матрицы (C++):

Исправьте ошибку в заполнении матрицы змейкой - 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++
Разговаривал с двумя преподами говорят что проект не правильно создавал,хотя все правильно из группы спрашивал у парней говорят что не...

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

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

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

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2013, 21:42
Привет! Вот еще темы с ответами:

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

Исправьте 1 ошибку пожалуйста - C++
Помогите пожалуйста исправить ошибку, код должен быть для C++ 6.0 Вот код программы #include &lt;iostream.h&gt; #include &lt;stdlib.h&gt; ...

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

строки, исправьте ошибку( - 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,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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