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

Нахождение определителя матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Деление и умножение строками http://www.cyberforum.ru/cpp-beginners/thread209106.html
Написать программу, которая умножала б и делила, типо как в школе, столбиком
C++ База Данных Доброго времени суток! Необходима небольшая помощь в написании БД на с++. struct Car { char name; char model; char color; char year; http://www.cyberforum.ru/cpp-beginners/thread209105.html
C++ Определить координаты вершины треугольника
Здравствуйте, снова обращаюсь к вам за помощью. Прошу помочь в таком задании, искал вроде ничего похожего не нашел. Дублирование тем запрещено правилами форума (п. 3.4). Не плодите одинаковых...
C++ Как скомпилировать программу на Mac OS
Например, написал я программу на Си в TextEdit, теперь мне нужно её скомпилировать. Я установил gcc 4.2 который идёт в комплекте с xcode. Как мне теперь скомпилировать написанную программу?
C++ Найти число в двоичной записи которого максимальное число единиц http://www.cyberforum.ru/cpp-beginners/thread209088.html
Среди простых чисел ,не превосходящих N ,найти такое ,в двоичной записи которого максимальное число единиц. Уважаемые форумчане помогите с кодом, буду очень благодарен.
C++ Найти непрерывные участки, на которых сумма элементов равна 100 Найти непрерывные участки, на которых сумма элементов равна 100 Что-то я тут намудрил... Помогите поправить.. #include "stdafx.h" #include <iostream> #include <ctime> using namespace std;... подробнее

Показать сообщение отдельно
koka278
3 / 3 / 1
Регистрация: 11.10.2010
Сообщений: 18

Нахождение определителя матрицы - C++

12.12.2010, 14:46. Просмотров 3702. Ответов 3
Метки (Все метки)

Здравствуйте, помогите пожалуйста дописать. Нужно было реализовать в виде модуля, программку, которая выполняет действия над квадратными матрицами:
1) нахождение определителя матрицы
2) сложение 2х матриц
3) умножение 2х матриц
4) транспонирование матрицы

Как не пробывал, но что-то 2,3,4 не получается
вот что уже написал:
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <iostream.h> 
#include <math.h> 
#include <windows.h>
 
 
char FileName[256];
char Stroka[100];
char RusText[100];
char *slovo;
 
double **Matrix,**Matrix2,Osndet;
int i,j,N=0;
double Determinant()
{
    int maxl,k;
    double del, det=1,d;
 
//приведение матрицы к треугольному виду
    for(k=0;k<N-1;k++)
    {       
        maxl=k;
        for(i=k+1;i<N;i++)
        {
            if(abs(Matrix[i][k])>abs(Matrix[k][k]))
            {
                maxl=i;
            }
        }
        if(maxl!=k)//если максимальный элемент не на диагонали, тогда переставляем строки с учетом изменения определителя
        {
            det=det*(-1);
            for(j=0;j<N;j++)
            {
                d=Matrix[k][j];
                Matrix[k][j]=Matrix[maxl][j];
                Matrix[maxl][j]=d;
            }
        }
        if(Matrix[k][k]!=0)
        {
            for(i=k+1;i<N;i++)
            {
                del=Matrix[i][k]/Matrix[k][k];
                for(j=0;j<N;j++)
                {
                    Matrix[i][j]=Matrix[i][j]-del*Matrix[k][j];//вычитание верхней строки от нижних
                }
    
            }
        }
        else
        {
            return 0;
        }
    }
//вычисление определителя путем премножения диагональных элементов
    for(i=0;i<N;i++)
        det*=Matrix[i][i];  
    return det;
}
 
 
main()
{
    char RusMatrVvd[20],RusMatrStr[15],RusMatrStlb[15];
    CharToOem("Введите элемент ",RusMatrVvd);
    CharToOem("-ой стоки ",RusMatrStr);
    CharToOem("-ого столбца: ",RusMatrStlb);
    CharToOem("Введите размерность квадратной матрицы : ",RusText);         
    cout<<RusText;
    cin>>N;
    Matrix=new double*[N];      
    for(i=0;i<N;i++)        
    {   
        Matrix[i]=new double[N];
        for(j=0;j<N;j++)
        {
            cout<<RusMatrVvd<<i+1<<RusMatrStr<<j+1<<RusMatrStlb;
            cin>>Matrix[i][j];
        }
    }
    
    CharToOem("Исходная матрица:",RusText);
    cout<<endl<<RusText<<endl;
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            cout<<Matrix[i][j]<<"\t";
        }
        cout<<endl;
    }
    
    CharToOem("Что делать? ",RusText);          
    cout<<endl<<RusText<<endl;
    CharToOem("1 - Вычисление определителя матрицы",RusText);
    cout<<endl<<RusText<<endl;
    CharToOem("2 - Сложение двух матриц ",RusText);
    cout<<endl<<RusText<<endl;
    CharToOem("3 - Умножение одной матрицы на другую ",RusText);
    cout<<endl<<RusText<<endl;
    CharToOem("4 - Нахождение транспонированной матрицы ",RusText);
    cout<<endl<<RusText<<endl<<endl;
    int vop1;
    cin>>vop1;
    switch(vop1)
    {
    case 1:
        {
        Osndet = Determinant();
        CharToOem("Определитель равен: ",RusText);
        cout<<endl<<RusText<<Osndet<<endl;
        break;
        }
 
    case 2:
        {
        CharToOem("Введите элементы второй матрицы : ",RusText);    
        cout<<RusText<<endl;
        Matrix2=new double*[N];     
        for(i=0;i<N;i++)        
        {   
           Matrix2[i]=new double[N];
           for(j=0;j<N;j++)
           {
               cout<<RusMatrVvd<<i+1<<RusMatrStr<<j+1<<RusMatrStlb;
               cin>>Matrix2[i][j];
           }
        }
    
        CharToOem("Вторая матрица:",RusText);
        cout<<endl<<RusText<<endl;
        for(i=0;i<N;i++)
        {
           for(j=0;j<N;j++)
           {
               cout<<Matrix2[i][j]<<"\t";
           }
        cout<<endl;
        }
        //дальше не знаю как сложить
        }
        break;
        }
    case 3:
                       {
                       //помогите умножить
 
    case 4:
        {
        //помогите найти транспонированную матрицу
    }
 getch();
    return 0;
}
и еще чтобы, после выполнения программа не завершала работу, а спрашивала "выполнить что-нибудь еще?"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru