Мои записи
[CPP] Решение СЛАУ методом Краммера
|=------------------=[ Magic Technologic Inc.]=------------------=| |=-----=[ Volume 0x0c, Algoritms 0x11, Phile #0x0a of 0x0f ]=----=| |=---------------------------------------------------------------=| |=--------------=[ Решение СЛАУ методом Краммера ]=--------------=| |=---------------------------------------------------------------=| |=---------------=[ Copyright (c) Flame Of Soul ]=---------------=| |=--------------=[ [E-mail]: _allbasse@yandex.ru ]=--------------=| |=---------------------------------------------------------------=| |=----------------------------=[ CPP ]=--------------------------=| |=---------------------------------------------------------------=|
#include <iostream.h> #include <stdio.h> #include <math.h> double DET (unsigned int columns); bool PROVCOL(unsigned int num, char colNum); unsigned int Column1(unsigned int num, char colNum); unsigned int Column0(unsigned int num, char colNum); double **Matrix; int n; main() { int i, j; double mainDET; cout<<"Vvedite kolichestvo uravneniy "<<endl; cin>>n; while (n > 10 || n < 1) { cout<<"Vu ne mogete vvesti bol'she 10 ili men'she 1 uravneniya, vvedite esche raz "; cin>>n; } Matrix = (double**) new double[n]; for (i=0; i<= n-1; i++) {Matrix[i] = new double[n+1];} for (i = 0; i <= n-1; i++) for (j = 0; j <= n; j++) { cout<<"Vvedite element matricu s koordinatami ("<<i<<","<<j<<") "; cin>>Matrix[i][j]; } cout<<"Vasha matrica:\n"; for (i = 0; i <= n-1; i++) {for (j = 0; j <= n; j++) cout<<Matrix[i][j]<<"\t"; cout<<endl; } mainDET = DET(pow(2,n)); if (mainDET == 0) { cout<<"Net resheniy!\n"; } else { printf ("Korni sistemu:\n"); for (i=0; i <= n-1; i++) printf ("%.3f ", -pow(-1,n+i)*DET(pow(2,i))/mainDET); printf ("\n"); } cout<<"Detrmenant sistemu raven: "<<mainDET<<endl; for (i = 0; i <= (n-1); i++) delete Matrix[i]; delete Matrix; cout<<"Vuchisleniya zakonchenu. Spasibo chto vubrali nas!\n"; return 0; }
double DET (unsigned int columns) {double det = 0; int i, numCols = 0, lastFalse, cntr = 0; for (i=0; i<=n; i++) { if (PROVCOL(columns, i)) numCols++; else lastFalse = i; } if ((n - numCols) == 0) det = Matrix[n-1][lastFalse]; else for (i = 0; i <= n; i++) if (!PROVCOL(columns, i)) { columns = Column1(columns, i); det += pow(-1,(cntr))*Matrix[numCols-1][i]*DET(columns); columns = Column0(columns, i); cntr++; } return det; } bool PROVCOL(unsigned int num, char colNum){ _asm { xor eax, eax; xor ebx, ebx; mov bl, colNum; bt num, ebx; jnc none; inc eax; none:}}
unsigned int Column1(unsigned int num, char colNum){ _asm { xor eax, eax; mov al, colNum; bts num, eax;} return num;}
unsigned int Column0(unsigned int num, char colNum){ _asm { xor eax, eax; mov al, colNum; btr num, eax;} return num;}
|=-----------------------------=[ CPP ]=---------------------------=| |=-----------------------------------------------------------------=|
|
| Категория: Численные методы | Добавил: flame (29.05.2009)
|
| Просмотров: 2011 | Комментарии: 3
| Рейтинг: 0.0/0 |
|
| Всего комментариев: 3 | |
|
3
GogKagKeypece
(29.11.2012 19:51)
0
223752 http://mycashadvance.pro/#470298 payday loan in austin tx
|
2
GogKagKeypece
(29.11.2012 03:41)
0
803518 http://tenpaydayloans.co.uk/#307794 no bank account payday advance
|
1
SemaHienceGen
(23.11.2012 07:00)
0
513611 http://paydayloansall.net/#723779 payday loan seattle
|
|
|
|
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
|
Статистика
Онлайн всего: 1 Гостей: 1 Пользователей: 0

|