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

Как перевести матрицу в трёхдиагональную? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? http://www.cyberforum.ru/cpp-beginners/thread1852671.html
header.h template <class T> class MyVector { public: void swap(MyVector<T>Vector); } template <class T> void MyVector<T>::swap(MyVector<T>Vector) {
C++ Передача в функцию двумерного массива Доброго времени суток. Есть двумерный массив, размерностью n на m. Нужно передать его в качестве параметра в функцию 1) обычным способом 2) используя указатели. Буду признателен за помощь. http://www.cyberforum.ru/cpp-beginners/thread1852670.html
C++ Функции и массивы
Помогите, пожалуйста, написать программу:
C++ Прогрессия Фибоначчи
Никак не могу понять что не так с кодом. Хотел сделать прогрессию Фибоначчи, постоянно выдает ошибку, не получается исправить. #include <iostream> using namespace std; int GetFibNumber(int...
C++ Сортировка структур в алфавитном порядке http://www.cyberforum.ru/cpp-beginners/thread1852665.html
Отсортировать в алфавитном порядке по "TIP". #include<iostream> #include<cstdio> #include<string.h> using namespace std; struct PC{ char TIP ; int Ch ; int OP ;
C++ Перегрузка оператора сложения матриц Всем привет. Народ, снова нуждаюсь в вашей помощи. Есть класс матрицы class DoubleArr { private: double** arr; // массив int h; // высота массива int w; // ширина массива public: подробнее

Показать сообщение отдельно
Marakanec
0 / 0 / 0
Регистрация: 21.10.2016
Сообщений: 9

Как перевести матрицу в трёхдиагональную? - C++

16.11.2016, 23:16. Просмотров 229. Ответов 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
// metod.cpp : Defines the entry point for the console application.
 
//metod progonki< dlja dannogo metoda raspologaetsja cto dannaja matrica sistemi trexdiagonaljna,
//koeficienti sistemi raspolozennie ne na glavnoe diagonali i na 1 element v kazduju storonu ot nejo ravni 0
 
#include "stdafx.h"
#include <iostream>
#include "malloc.h"
#include <locale>
#include <time.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");//podkljucenie russkoga jazika dlja konsoli
    float **a;//matrica sistemi
    int n;//kolicestvo peremennih
 
    float **abg;//matrica dlja rascjota koeficientov po metodu progonki
 
    float *x;//vektor neizvestnih
 
    char* bx = new char[10];
 
    cout << "veedite kolicestvo peremennih ";
    cin >> n;
    //videlenie pamjati pod massiv ishodnih dannih
    a = (float **)calloc(n, sizeof(float*)); // n strok v massive
    for (int i = 0; i < n; i++)
        a[i] = (float *)calloc(n + 1, sizeof(float)); //n+1 stolbec
    //videlenie pamjatoi pod vekrot neizvestnih
    x = (float *)calloc(n, sizeof(float));
    //vvod ishodnih dannih
    for (int i = 0; i<n; i++)
        for (int j = 0; j < n + 1; j++)
        {
            if (j == n)//vvod pravoj casti uravnenija
                cout << "b[" << i << "]=";
            else//vvod osnovnih koeficientov
                cout << "a[" << i << "][" << j << "]=";
            cin >> a[i][j];
        }
 
    //videlenie pamjati pod vspomogateljnij massiv
    abg = (float **)calloc(3, sizeof(float*)); // 3 stroki v massive
    for (int i = 0; i < 3; i++)
        abg[i] = (float *)calloc(n, sizeof(float)); //n stolbcob
 
    //rascjot po metodu progonki
    clock_t time;
 
    time = clock();
    //dlja pervoj stroki
    abg[2][0] = a[0][0];//gamma
    abg[1][0] = a[0][n] / abg[2][0];//betta
    //dlja vseh
    for (int i = 1; i<n; i++)
    {
        abg[0][i - 1] = -a[i - 1][i] / abg[2][i - 1];//aljfa preduduwej stroki
        abg[2][i] = a[i][i] + a[i][i - 1] * abg[0][i - 1];//gamma
        abg[1][i] = (a[i][n] - a[i][i - 1] * abg[1][i - 1]) / abg[2][i];//beta
    }
 
    //obratnij hod - vicislenie neizvestnih
    x[n - 1] = abg[1][n - 1];
    for (int i = n - 2; i >= 0; i--)
        x[i] = abg[0][i] * x[i + 1] + abg[1][i];
 
    time = clock() - time;
    //vivod rezuljata
    for (int i = 0; i<n; i++)
        printf("x[%d]=%f\n", i, x[i]);
    cout << "Vremja vipolnenija: " << (float)time / CLOCKS_PER_SEC << endl; //Vremja vipolnenija
    system("pause");//zaderzka ekrana
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru