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

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

Войти
Регистрация
Восстановить пароль
 
Marakanec
0 / 0 / 0
Регистрация: 21.10.2016
Сообщений: 9
#1

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

16.11.2016, 23:16. Просмотров 228. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2016, 23:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как перевести матрицу в трёхдиагональную? (C++):

Как перевести матрицу с enum в char - C++
доброго времени суток. такой вот вопрос, я обьявил о типе typedef enum Cell; создал матрицу этого типа, теперь я хочу перевести ее в...

Как разреженную матрицу перевести в формат CRS? - C++
Привет кодеры! Моя задача заключается в том чтобы перемножить две разреженные матрицы. Но для того чтобы это сделать нужно эти матрицы...

Как умножить матрицу на матрицу? - C++
Как умножить матрицу на матрицу? Напишите пожалуйста!

Как умножить матрицу на матрицу - C++
Как умножить матрицу на матрицу в Visual Studio?

Как перевести на С++ - C++
if (k % 2 != 0) { /* Определяем перемещение дисков для нечетного хода */ switch (t % 3) { /* Выбираем перемещение в...

Как перевести с C на C# - C++
Имеется работоспособная (вроде) программа на Си. Нужно как-то перделать на Си Шарп. Потом этот код воткну в контрол для винформс. вот...

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

Как перевести код с C++ на C ? - C++
#include &lt;iostream&gt; using namespace std; int main(){ float A = 3.0; float B = A; size_t N = 5; for( size_t...

Как перевести код из MS VS в C++ 3.1? - C++
#include &quot;stdafx.h&quot; - здесь пишет ошибку,потому что нет у меня такого инклуда!Подскажите где взять? using namespace std; - в этом...

Как можно перевести - C++
Как можно перевести Java на C++

Как перевести из 4 сс в 8сс - C++
Всем привет пацаны! как написать программу на с++, для перевода чисел с 4 системы счисления в 8- ричную систему счисления?


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

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

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