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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры.Вывести список http://www.cyberforum.ru/cpp-beginners/thread827358.html
Здраствуйте. Помогите,пожалуйста,с програмой, немного не понимаю как сделать В отделе кадров хранится список преподавателей университета, в котором указано Ф.И.О. преподавателя, его возраст,...
C++ Развернуть матрицу подиагонально в одномерный массив Развернуть матрицу подиагонально в одномерный массив Конечно были идеи: вроде приписывать нулевые матрицы и брать у них главную диагональ... ну или записать две матрицы где чередуются с нулевыми... http://www.cyberforum.ru/cpp-beginners/thread827338.html
C++ Ошибка потокового ввода cin
Цель: сделать проверку ввода с клавиатуры числа unsigned short типа. Проблема: при вводе значения кпримеру: 2A , то переходит к следующему считыванию значения и в него пытается вписать что-то. Код:...
в чем ошибка? задача на "сортировку массива" C++
Подскажите в чем ошибка в коде. Я должен отсортировать массив по убыванию элементов. #include <iostream> #include <conio.h> #include<time.h> using namespace std; const int N=10; void main () {...
C++ Циклы и использование case http://www.cyberforum.ru/cpp-beginners/thread827309.html
Вот задание: Напишите программу, которая читает из cin входные числа (целые или вещественные) и суммирует, умножает или делит их, прекращая процесс после ввода 0. Сконструируйте три версии этой...
C++ Строки и файлы Доброго времени суток. Я студент, и недавно перешёл с Pascal на С++, и столкнулся с такой проблемой, что не могу понять, как в "плюсах" работать со строками и файлами. Пожалуйста, дайте кто- нибудь... подробнее

Показать сообщение отдельно
кщтеук34
1 / 1 / 0
Регистрация: 27.02.2013
Сообщений: 70

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

03.04.2013, 21:42. Просмотров 262. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru