• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Нахождение определителя матрицы методом "Звездочки"

Charlotte

Новые
Регистрация
20 Апр 2014
Сообщения
63
Реакции
0
Баллы
0
Нахождение определителя матрицы методом "Звездочки"

привет, всем активным участникам форума. помогите, пожалуйста, написать программу на языке C++ или Delphi .

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

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

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

Type
matr  = array[1..n,1..m] of integer;

Const 
A: matr = ( ( 2, 5, 1 ),
            ( 3, 2, 4 ),
            ( 1, 3, 6 )
           ); 
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,4 );
END.
 
как то так. я верно понял?
 

Вложения

  • 123.webp
    123.webp
    7 KB · Просмотры: 500
poiu, если вы знаете как написать эту программу на Delphi или С++, то, пожалуйста, напишите! огромное вам спасибо, за решение на Pascal!!!
 
метод.webp
я заменяю числа в матрице и получаю вот такой ответ. Наверное в программе что-то не так (программу можно и на Pascal)
 
Теперь должно работать

PHP:
Const n=3; m=3; 

Type 
matr  = array[1..n,1..m] of integer; 

Const  
A: matr = ( ( 2, 10, 1 ), 
            ( 3, 4, -1 ), 
            ( 1, 6, 2 ) 
           );  
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,')',' = ', S ); 
Writeln;
Writeln('Resultat resheniya : (',S,')');

END.
 
Можно даже вот так написать, чтобы в сторону не двигать.
PHP:
Const n=3; m=3; 

Type 
matr  = array[1..n,1..m] of integer; 

Const  
A: matr = ( ( 2, 10, 1 ), 
            ( 3, 4, -1 ), 
            ( 1, 6, 2 ) 
           );  
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,')',' = ', S ); 
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*2 = 
     = (16) + (-10) + (18) - (4) - (-12) - (60) = -28

Resultat resheniya : (-28)
 
а написал, да вот проблемка. до понедельника никак не выложу. так что, если не терпится, то извиняйте.
 
Назад
Сверху