Ir para conteúdo

Hugo Loco

Membros
  • Postagens

    1
  • Registro em

  • Última visita

Posts postados por Hugo Loco

  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");
    }

    Screenshot_1.png

×
×
  • Criar Novo...