Ir para conteúdo

Hugo Loco

Membros
  • Postagens

    1
  • Registro em

  • Última visita

Tudo que Hugo Loco postou

  1. 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"); }
×
×
  • Criar Novo...