Não estou conseguindo guardar os novos valores para uma matriz como na conta L2 = L2 - a(2,1)L1, o programa está guardando apenas o primeiro valor.
Estou usando a biblioteca Eigen/Dense.
Código:
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main(){
MatrixXd A(2,3),B(2,3);
float v1[2],v2[2],p1[2],p2[2];
int i,j;
cout << "Digite os dados do ponto A1 da primeira reta: " << endl;
cout << "Insira a coordenada x de A1: "; cin >> p1[0];
cout << "Insira a coordenada y de A1: "; cin >> p1[1];
cout << "Digite os dados do vetor diretor da primeira reta: "<< endl;
cout << "Insira a coordenada x de v1: "; cin >> v1[0];
cout << "Insira a coordenada y de v1: "; cin >> v1[1];
cout << "Digite os dados do ponto A2 da segunda reta: " << endl;
cout << "Insira a coordenada x de A2: "; cin >> p2[0];
cout << "Insira a coordenada y de A2: "; cin >> p2[1];
cout << "Digite os dados do vetor diretor da segunda reta: "<< endl;
cout << "Insira a coordenada x de v2: "; cin >> v2[0];
cout << "Insira a coordenada y de v2: "; cin >> v2[1];
Preciso de ajuda para guardar um novo valor em uma matriz em C++
em C/C++
Postado · Editado por Hugo Loco
Não estou conseguindo guardar os novos valores para uma matriz como na conta L2 = L2 - a(2,1)L1, o programa está guardando apenas o primeiro valor.
Estou usando a biblioteca Eigen/Dense.
Código:
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
int main(){
MatrixXd A(2,3),B(2,3);
float v1[2],v2[2],p1[2],p2[2];
int i,j;
cout << "Digite os dados do ponto A1 da primeira reta: " << endl;
cout << "Insira a coordenada x de A1: "; cin >> p1[0];
cout << "Insira a coordenada y de A1: "; cin >> p1[1];
cout << "Digite os dados do vetor diretor da primeira reta: "<< endl;
cout << "Insira a coordenada x de v1: "; cin >> v1[0];
cout << "Insira a coordenada y de v1: "; cin >> v1[1];
cout << "Digite os dados do ponto A2 da segunda reta: " << endl;
cout << "Insira a coordenada x de A2: "; cin >> p2[0];
cout << "Insira a coordenada y de A2: "; cin >> p2[1];
cout << "Digite os dados do vetor diretor da segunda reta: "<< endl;
cout << "Insira a coordenada x de v2: "; cin >> v2[0];
cout << "Insira a coordenada y de v2: "; cin >> v2[1];
cout << "As retas inseridas foram: " << endl;
cout << "r1: (x,y) = " << "(" << p1[0] << "," << p1[1] << ") + t[" << v1[0] << "," <<v1[1] << "]" << endl;
cout << "r2: (x,y) = " << "(" << p2[0] << "," << p2[1] << ") + h[" << v2[0] << "," <<v2[1] << "]" << endl;
A(0,0) = v1[0];
A(0,1) = -v2[0];
A(0,2) = p2[0] - p1[0];
A(1,0) = v1[1];
A(1,1) = -v2[1];
A(1,2) = p2[1] - p1[1];
cout << "Matriz obtida: " << endl << A << endl;
if(A(0,0) == 0){ //Verificar se o termo a(1,1) e igual a 0, se for, vamos trocar L1 e L2
cout << "Termo a(1,1) e igual a 0, vamos trocar L1 e L2" << endl;
for(j=0;j<3;j++)
{
B(1,j) = A(0,j);
A(0,j) = A(1,j);
A(1,j) = B(1,j);
}
if(A(0,0) == 1){
cout << "a(1,1) = 1 --> Nada a fazer em L1" << endl;
cout << "Matriz obtida: " << endl << A << endl;
}
else{
if(A(0,0) != 0){
for(j=0;j<3;j++){
A(0,j) = (1/A(0,0)) * A(0,j);
}
cout << "a(1,1) != 1 --> L1 = L1/a(1,1)" << endl;
cout << "Matriz obtida: " << endl << A << endl;
}
}
}
else{
if(A(0,0) == 1){
cout << "a(1,1) = 1 --> Nada a fazer em L1" << endl;
cout << "Matriz obtida: " << endl << A << endl;
}
else{
for(j=0;j<3;j++){
A(0,j) = A(0,j) / A(0,0);
}
cout << "a(1,1) != 1 --> L1 = L1/a(1,1)" << endl;
cout << "Matriz obtida: " << endl << A << endl;
}
}
if((A(1,0)) == 0){
cout << "a(2,1) = 0 --> Nada a fazer em L2" << endl;
cout << "Matriz obtida: " << endl << A << endl;
}
else
{
for(j=0;j<3;j++){
A(1,j) = A(1,j) - A(1,0) * A(0,j);
}
cout << "a(2,1) != 0 --> L2 = L2 - a(2,1)L1" << endl;
cout << "Matriz obtida: " << endl << A << endl;
}
if(A(1,1) == 0){ //Se o termo a(2,2) e a(2,3) forem iguais a 0, as retas sao coincidentes senao, sao paralelas
if(A(1,2) == 0){
cout << "As retas sao coincidentes" << endl;
}
else{
cout << "As retas sao paralelas" << endl;
}
}
else{
if(A(1,1) == 1){
cout << "Nada a fazer em L2" << endl;
}
else{
for(j=0;j<3;j++){
A(1,j) = A(1,j) / A(1,1);
}
}
if((A(0,1)) == 0 ){
cout << "Existe ponto de intersecao" << endl << "A solucao eh t = " << A(0,2) << " e h = " << A(1,2) << endl;
cout << "O ponto de intersecao e P = (" << v1[0] * A(0,2) + p1[0] << "," << v1[1] * A(0,2) + p1[1] << ")" << endl;
}
else{
for(j=0;j<3;j++){
A(0,j) = A(0,j) - A(0,1) * A(1,j);
}
cout << "Existe ponto de intersecao" << endl << "A solucao eh t = " << A(0,2) << " e h = " << A(1,2) << endl;
cout << "O ponto de intersecao e P = (" << v1[0] * A(0,2) + p1[0] << "," << v1[1] * A(0,2) + p1[1] << ")" << endl;
}
}
system("pause");
}