Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Нахождение определителя матрицы методом "Звездочки" (http://www.tehnari.ru/f41/t96041/)

Charlotte 27.04.2014 23:03

Нахождение определителя матрицы методом "Звездочки"
 
Вложений: 2
привет, всем активным участникам форума. помогите, пожалуйста, написать программу на языке C++ или Delphi .

задание:
нужно написать программу, чтобы она решала матрицу по правилу Саррюса (правило треугольников)
вот картинка этого правила:
Вложение 184130 Вложение 184131
вот так нужно, чтобы считалась матрица:
=(a11*a22*a33)+(a12*a23*a31)+(a13*a21*a32)-(a13*a22*a31)-(a11*a32*a23)-(a12*a21*a33)

на форме компонент StrinGrid в который нужно вводить матрицу и кнопка для её решения (чтобы выводилось решение полностью, а не только ответ).

всем огромное спасибо за помощь и внимание!!!

Madara 28.04.2014 02:52

Я конечно не изучал С++ и не совсем понимаю как необходимо написать программу, но вот не поленился написал на Паскале (в чём могу...хоть как-то), хотя бы для собственного развития, быть может вам чем-то это поможет...
PHP код:

Const n=3m=3;

Type
matr  
= array[1..n,1..mof integer;

Const 
Amatr = ( ( 25),
            ( 
32),
            ( 
13)
           ); 
Var 
S:Real;         
Begin
S
:=(   ( ( A[1,1] )*( A[2,2] )*( A[3,3] ) )+
       ( ( 
A[1,2] )*( A[2,3] )*( A[3,1] ) )+
       ( ( 
A[1,3] )*( A[2,1] )*( A[3,2] ) )-
       ( ( 
A[1,3] )*( A[2,2] )*( A[3,1] ) )-
       ( ( 
A[1,1] )*( A[3,2] )*( A[2,3] ) )-
       ( ( 
A[1,2] )*( A[2,1] )*( A[3,3] ) )  );

Writeln('( A[1,1] )*( A[2,2] )*( A[3,3] ) + ( A[1,2] )*( A[2,3] )*( A[3,1] ) + ( A[1,3] )*( A[2,1] )*( A[3,2] ) - ( A[1,3] )*( A[2,2] )*( A[3,1] ) - ( A[1,1] )*( A[3,2] )*( A[2,3] ) - ( A[1,2] )*( A[2,1] )*( A[3,3] ) = ',
 
A[1,1],'*',A[2,2],'*',A[3,3],'+',A[1,2],'*',A[2,3],'*',A[3,1],'+',A[1,3],'*',A[2,1],'*',A[3,2],'-',A[1,3],'*',A[2,2],'*',A[3,1],'-',A[1,1],'*',A[3,2],'*',A[2,3],'-',A[1,2],'*',A[2,1],'*',A[3,3],'='S:0,);
END


poiu 28.04.2014 12:07

Вложений: 1
как то так. я верно понял?

Charlotte 28.04.2014 22:35

poiu,
Цитата:

как то так. я верно понял?
да вы всё верно поняли

Charlotte 28.04.2014 22:40

poiu, если вы знаете как написать эту программу на Delphi или С++, то, пожалуйста, напишите! огромное вам спасибо, за решение на Pascal!!!

Charlotte 28.04.2014 22:44

Вложений: 1
Вложение 184189
я заменяю числа в матрице и получаю вот такой ответ. Наверное в программе что-то не так (программу можно и на Pascal)

Madara 29.04.2014 01:26

Теперь должно работать

PHP код:

Const n=3m=3

Type 
matr  
= array[1..n,1..mof integer

Const  
Amatr = ( ( 210), 
            ( 
34, -), 
            ( 
16
           );  
Var  
S,S1,S2,S3,S4,S5,S6:Integer;          
Begin 
Writeln
('Reshenie matrici : ');
Writeln;
S1:=( ( A[1,1] )*( A[2,2] )*( A[3,3] ) ); 
S2:=( ( A[1,2] )*( A[2,3] )*( A[3,1] ) ); 
S3:=( ( A[1,3] )*( A[2,1] )*( A[3,2] ) ); 
S4:=( ( A[1,3] )*( A[2,2] )*( A[3,1] ) ); 
S5:=( ( A[1,1] )*( A[3,2] )*( A[2,3] ) ); 
S6:=( ( A[1,2] )*( A[2,1] )*( A[3,3] ) ); 
S:=(S1+S2+S3)-(S4+S5+S6);
       

Writeln'( A[1,1] )*( A[2,2] )*( A[3,3] ) + ( A[1,2] )*( A[2,3] )*( A[3,1] ) + ( A[1,3] )*( A[2,1] )*( A[3,2] ) - ( A[1,3] )*( A[2,2] )*( A[3,1] ) - ( A[1,1] )*( A[3,2] )*( A[2,3] ) - ( A[1,2] )*( A[2,1] )*( A[3,3] ) = '); 
Writeln' ',A[1,1],'*',A[2,2],'*',A[3,3],'+',A[1,2],'*',A[2,3],'*',A[3,1],'+',A[1,3],'*',A[2,1],'*',A[3,2],'-',A[1,3],'*',A[2,2],'*',A[3,1],'-',A[1,1],'*',A[3,2],'*',A[2,3],'-',A[1,2],'*',A[2,1],'*',A[3,3],' = ');
Writeln' = (',S1,') + (',S2,') + (',S3,') - (',S4,') - (',S5,') - (',S6,')',' = '); 
Writeln;
Writeln('Resultat resheniya : (',S,')');

END


Madara 29.04.2014 01:39

Можно даже вот так написать, чтобы в сторону не двигать.
PHP код:

Const n=3m=3

Type 
matr  
= array[1..n,1..mof integer

Const  
Amatr = ( ( 210), 
            ( 
34, -), 
            ( 
16
           );  
Var  
S,S1,S2,S3,S4,S5,S6:Integer;          
Begin 
Writeln
('Reshenie matrici : ');
Writeln;
S1:=( ( A[1,1] )*( A[2,2] )*( A[3,3] ) ); 
S2:=( ( A[1,2] )*( A[2,3] )*( A[3,1] ) ); 
S3:=( ( A[1,3] )*( A[2,1] )*( A[3,2] ) ); 
S4:=( ( A[1,3] )*( A[2,2] )*( A[3,1] ) ); 
S5:=( ( A[1,1] )*( A[3,2] )*( A[2,3] ) ); 
S6:=( ( A[1,2] )*( A[2,1] )*( A[3,3] ) ); 
S:=(S1+S2+S3)-(S4+S5+S6);
       

Writeln(' ( A[1,1] )*( A[2,2] )*( A[3,3] ) +');
Writeln('   + ( A[1,2] )*( A[2,3] )*( A[3,1] ) +');
Writeln('     + ( A[1,3] )*( A[2,1] )*( A[3,2] ) -');
Writeln('       - ( A[1,3] )*( A[2,2] )*( A[3,1] ) -');
Writeln('         - ( A[1,1] )*( A[3,2] )*( A[2,3] ) -');
Writeln('           - ( A[1,2] )*( A[2,1] )*( A[3,3] ) = '); 
Writeln' = ',A[1,1],'*',A[2,2],'*',A[3,3],'+',A[1,2],'*',A[2,3],'*',A[3,1],'+',A[1,3],'*',A[2,1],'*',A[3,2],'-',A[1,3],'*',A[2,2],'*',A[3,1],'-',A[1,1],'*',A[3,2],'*',A[2,3],'-',A[1,2],'*',A[2,1],'*',A[3,3],' = ');
Writeln'     = (',S1,') + (',S2,') + (',S3,') - (',S4,') - (',S5,') - (',S6,')',' = '); 
Writeln;
Writeln('Resultat resheniya : (',S,')');

END


Должно выдать:

PHP код:

Reshenie matrici 

 ( 
A[1,1] )*( A[2,2] )*( A[3,3] ) +
   + ( 
A[1,2] )*( A[2,3] )*( A[3,1] ) +
     + ( 
A[1,3] )*( A[2,1] )*( A[3,2] ) -
       - ( 
A[1,3] )*( A[2,2] )*( A[3,1] ) -
         - ( 
A[1,1] )*( A[3,2] )*( A[2,3] ) -
           - ( 
A[1,2] )*( A[2,1] )*( A[3,3] ) = 
 = 
2*4*2+10*-1*1+1*3*6-1*4*1-2*6*-1-10*3*
     = (
16) + (-10) + (18) - (4) - (-12) - (60) = -28

Resultat resheniya 
: (-28


poiu 29.04.2014 02:53

а написал, да вот проблемка. до понедельника никак не выложу. так что, если не терпится, то извиняйте.


Часовой пояс GMT +4, время: 12:56.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.