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

Решение СЛАУ методом Крамера - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ задачи о вложенных циклах http://www.cyberforum.ru/cpp-beginners/thread256087.html
1)Дана матрица А(m,n). Перемножить элементы с четной суммой индексов I+J. Найти максимальные элементы каждого столбца матрицы. 2)Даны действительные числа а1, а2, … , а24. Получить последовательность b1, b2, … , b10, где b1= a1+a2+a3+...+a24 b2= a1^2+a2^2+....+a24^2 ..... a10= a1^10+a2^10+...+a24^10
C++ Две правые треугольные матрицы А и В порядка n Помогите пожалуста. Язык Си Две правые треугольные матрицы А и В порядка n заданы так, как описаны в предыдущей задаче. Получить в аналогичном виде. Mатрицу A(E+B^2) где Е – единичная матрица порядка n. http://www.cyberforum.ru/cpp-beginners/thread256080.html
Выделение подстроки из строки C++
Всем доброго времени суток! Есть строка: "215 20110225221015" здесь закодирована дата следующего вида: 2011-02-25 22:10:15 какую функцию использовать чтобы выделить по частям год месяц и тд? substr ругается: идентификатор не найден... Пишу в Visual Studio 2008 C++ Console.Application
C++ Удалить трёхмерный массив
не удаляется массив int _tmain(int argc, _TCHAR* argv) { int iCount = 0; int *** dynamic = new int**; for (int i = 0; i < 5; i++) { dynamic = new int*; for (int j = 0; j < 6; j++)
C++ Вычислить значение функции http://www.cyberforum.ru/cpp-beginners/thread256044.html
Вычислить значение функции z=x3/y, где y=sin(πx), где x – любое целое число. При вычислении необходимо учесть, что у может быть равен нулю.
C++ Игра в реальном времени вот принцип работы моей игры while(true) { showBoard(); Sleep(100); system("cls"); if(kbhit()) get = getch(); go(get); подробнее

Показать сообщение отдельно
Erwin
1 / 1 / 0
Регистрация: 12.03.2011
Сообщений: 8

Решение СЛАУ методом Крамера - C++

12.03.2011, 22:23. Просмотров 4337. Ответов 8
Метки (Все метки)

Доброго времени суток!
Пишу курсовую по методу Крамера. Вроде ничего сложного, но программированием я занимаюсь не часто, скачал с нета реферат по теме с исходником. Вставил в прогу защиту от ввода в поток из цифр буквенных символом, приукрасил немножко...
Так как опыта мало, посмотрите плз, может что коряво написано, где улучшить можно. Жду критики))

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
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
 
void Kramer(double C[3][3],double D[3][1]);     //метод Крамера
void AddA();                                    //ввод матрицы 
void AddB();                                    //ввод столбца свободных членов
 
int i,j;
double A[3][3],B[3][1];
char z='y'; 
 
void main()
{
setlocale(LC_ALL,"Russian");
cout<<"\t\t\t\t\t\tКУРСОВОЙ ПРОЕКТ\n\t\t\t\t\t\tпо дисциплине: ЧИСЛЕННЫЕ МЕТОДЫ\n\t\t\t\t\t\tна тему: решение СЛАУ методом Крамера\n\n\n" <<endl;
while (z=='y') 
{ 
AddA();
AddB();
 
cout<<"\n\nДанная система выглядит так\n\n";        //показ СЛАУ
if(A[0][1]>=0 && A[0][2]>=0)
cout<<A[0][0]<<"x1"<<"+"<<A[0][1]<<"x2"<<"+"<<A[0][2]<<"x3"<<"="<< B[0][0]<<endl;
if(A[0][1]>=0 && A[0][2]<0)
cout<<A[0][0]<<"x1"<<"+"<<A[0][1]<<"x2"<<A[0][2]<<"x3"<<"="<<B[0][0] <<endl;
if(A[0][2]>=0 && A[0][1]<0)
cout<<A[0][0]<<"x1"<<A[0][1]<<"x2"<<"+"<<A[0][2]<<"x3"<<"="<<B[0][0] <<endl;
if(A[0][1]<0 && A[0][2]<0)
cout<<A[0][0]<<"x1"<<A[0][1]<<"x2"<<A[0][2]<<"x3"<<"="<<B[0][0] <<endl;
if(A[1][1]>=0 && A[1][2]>=0)
cout<<A[1][0]<<"x1"<<"+"<<A[1][1]<<"x2"<<"+"<<A[1][2]<<"x3"<<"="<< B[1][0]<<endl;
if(A[1][1]>=0 && A[1][2]<0)
cout<<A[1][0]<<"x1"<<"+"<<A[1][1]<<"x2"<<A[1][2]<<"x3"<<"="<<B[1][0] <<endl;
if(A[1][2]>=0 && A[1][1]<0)
cout<<A[1][0]<<"x1"<<A[1][1]<<"x2"<<"+"<<A[1][2]<<"x3"<<"="<<B[1][0] <<endl;
if(A[1][1]<0 && A[1][2]<0)
cout<<A[1][0]<<"x1"<<A[1][1]<<"x2"<<A[1][2]<<"x3"<<"="<<B[1][0]
<<endl;
if(A[2][1]>=0 && A[2][2]>=0)
cout<<A[2][0]<<"x1"<<"+"<<A[2][1]<<"x2"<<"+"<<A[2][2]<<"x3"<<"="<< B[2][0]<<endl;
if(A[2][1]>=0 && A[2][2]<0)
cout<<A[2][0]<<"x1"<<"+"<<A[2][1]<<"x2"<<A[2][2]<<"x3"<<"="<<B[2][0] <<endl;
if(A[2][2]>=0 && A[2][1]<0)
cout<<A[2][0]<<"x1"<<A[2][1]<<"x2"<<"+"<<A[2][2]<<"x3"<<"="<<B[2][0] <<endl;
if(A[2][1]<0 && A[2][2]<0)
cout<<A[2][0]<<"x1"<<A[2][1]<<"x2"<<A[2][2]<<"x3"<<"="<<B[2][0]<<endl;
cout<<"\n\n";
cout<<"С помощью расширенной матрици мы можем представить данную систему так:\n\n";//расширенная матрица
cout<<A[0][0]<<"\t"<<A[0][1]<<"\t"<<A[0][2]<<"\t"<<"|"<<"\t"<<B[0][0]<<endl;
cout<<A[1][0]<<"\t"<<A[1][1]<<"\t"<<A[1][2]<<"\t"<<"|"<<"\t"<<B[1][0]<<endl;
cout<<A[2][0]<<"\t"<<A[2][1]<<"\t"<<A[2][2]<<"\t"<<"|"<<"\t"<<B[2][0]<<endl;
cout<<"\n\n";
Kramer(A,B);                                //вызов функции
cout<<"\nДля ввода новой маотрици нажмите 'y', для выхода -'n' \n\n"; 
cin>>z; 
} 
}
void Kramer(double C[3][3],double D[3][1])
{
double det,det1,det2,det3,x1,x2,x3;
cout<<"\t\tОПРЕДЕЛИТЕЛИ\n\n";
 
det=C[0][0]*C[1][1]*C[2][2]+C[1][0]*C[2][1]*C[0][2]+C[0][1]*C[1][2]*C[2][0]-C[0][2]*C[1][1]*C[2][0]-C[1][0]*C[0][1]*C[2][2]-C[0][0]*C[2][1]*C[1][2];
cout<<"Опререлитель="<<det<<"\n\n";//определитель
if (det!=0)
{
det1=D[0][0]*C[1][1]*C[2][2]+D[1][0]*C[2][1]*C[0][2]+C[0][1]*C[1][2]*D[2][0]-C[0][2]*C[1][1]*D[2][0]-D[1][0]*C[0][1]*C[2][2]-D[0][0]*C[2][1]*C[1][2];
cout<<"Определитель1="<<det1<<"\t";//определитель 1
 
det2=C[0][0]*D[1][0]*C[2][2]+C[1][0]*D[2][0]*C[0][2]+D[0][0]*C[1][2]*C[2][0]-C[0][2]*D[1][0]*C[2][0]-C[1][0]*D[0][0]*C[2][2]-C[0][0]*D[2][0]*C[1][2];
cout<<"Определитель2="<<det2<<"\t";//определитель 2
 
det3=C[0][0]*C[1][1]*D[2][0]+C[1][0]*C[2][1]*D[0][0]+C[0][1]*D[1][0]*C[2][0]-D[0][0]*C[1][1]*C[2][0]-C[1][0]*C[0][1]*D[2][0]-C[0][0]*C[2][1]*D[1][0];
cout<<"Определитель3="<<det3<<"\n\n";//определитель 3
x1=det1/det;
x2=det2/det;
x3=det3/det;
cout << "\t\tРЕШЕНИЕ\n\n";
cout<<"x1="<<x1<<"\t"<<"x2="<<x2<<"\t"<<"x3="<<x3<<endl;
}
else 
{
cout<<"\n\nСистема не имеет решений, так как определитель равен нулю.\n\nДля продолжения нажмите любую клавишу"<<endl;
_getch();
}
}
void AddA()
{
cout<<"\nВведите коэффициенты при переменных x1,x2,x3 в 1-oм,2-oм,3-eм уравнениях"<<"\n\n";
for(i=0;i<3;i++)//ввод матрици коэффициентов
for(j=0;j<3;j++)
cin>>A[i][j]; 
while (cin.fail()) 
    {   
        if(cin.good()==true)
            {;break;}
        else
        {
        cin.clear();
        cin.sync();
        cout << "Введен неверный символ, повторите ввод матрицы\n\n";
        AddA();
        }
    }
}
void AddB()
{
cout<<"\nВведите свободные члены в 1-oм,2-oм,3-eм уравнениях\n\n";
for (i=0;i<3;i++)// ввод столбца свободных членов
cin>>B[i][0];
while (cin.fail()) 
    {   
        if(cin.good()==true)
            {;break;}
        else
        {
        cin.clear();
        cin.sync();
        cout << "Введен неверный символ, повторите ввод столбца свободных членов\n\n";
        AddB();
        }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru