Ir ao conteúdo
  • Cadastre-se

C++ Programa de identificação de ponto em um retângulo


Ga_bryel

Posts recomendados

#include <iostream>
using namespace std;

struct Ponto{
    int x;
    int y;
};

int main(){
    
    Ponto v1,v2,P;

    cout << "Insira a coordenada do vértice inferior esquerdo do retângulo: \n";
    cout << "X = ";
    cin >> v1.x;
    cout << "Y =";
    cin >> v1.y;
    cout << "Agora insira a coordenada do vértice superior direito do retângulo\n";
    cout << "X= ";
    cin >> v2.x;
    cout << "Y =";
    cin >> v2.y;

    cout << "As coordenadas dos vértices retângulo são: "<<"("<<v1.x <<"," <<v1.y<<")"<<"(" <<v2.x<<","<< v2.y<<")"<<endl;

    return 0;
}

Eae glr, estou com um problema da faculdade que não consigo pensar uma solução. Queria ajuda de vcs para me ajudar a programar isso. Estou começando agora e não consigo pensar em muitas soluções para esse código.

 

A questão é a seguinte :

 

Considerando a estrutura:

 

struct Ponto{

int x;

int y;

};

 

para representar um ponto em uma grade 2D, implemente um programa que indique se um ponto p está localizado dentro ou fora de um retângulo. O retângulo é definido por seus vértices inferior esquerdo v1 e superior direito v2. A função deve imprimir caso o ponto esteja localizado dentro do retângulo ou não.

 

 

até agora consegui fazer um programa para ler as coordenadas dos vértices do retângulo mas nao sei para onde ir agora.

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Ga_bryel    agora continuar pedindo a posição do ponto e em seguida verificar se ele se encontra dentro do retângulo informado , então seu código poderia ser assim  :

#include <iostream>
using namespace std;

struct Ponto{
    int x;
    int y;
};

int main(){

    Ponto v1,v2,P;

    cout << "Insira a coordenada do vértice inferior esquerdo do retângulo: \n";
    cout << "X = ";
    cin >> v1.x;
    cout << "Y = ";
    cin >> v1.y;
    cout << "Agora insira a coordenada do vértice superior direito do retângulo\n";
    cout << "X = ";
    cin >> v2.x;
    cout << "Y = ";
    cin >> v2.y;

    cout << "As coordenadas dos vértices retângulo são: "<<"("<<v1.x <<"," <<v1.y<<")"<<"(" <<v2.x<<","<< v2.y<<")"<<endl;
    cout<<"\nInsira a posição do ponto"<<endl;
    cout<<"X = ";
    cin>>P.x;
    cout<<"Y = ";
    cin>>P.y;
    if((P.x>=v1.x && P.x<=v2.x)&&(P.y<=v1.y && P.y>=v2.y)){
        cout<<"\nEsse Ponto está dentro do Retângulo !"<<endl;
        cout<<"("<<P.x<<")"<<" "<<"("<<P.y<<")"<<endl;
    }
    else{
        cout<<"Esse Ponto Está Fora Do Retângulo !"<<endl;
    }
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

10 horas atrás, Ga_bryel disse:

até agora consegui fazer um programa para ler as coordenadas dos vértices do retângulo mas nao sei para onde ir agora

 

Ler e imprimir as coordenadas de dois pontos não é assim importante. Podia ter começado a pensar com constantes mesmo.

 

Se você tem v1(x,y) e v2(z,t) no mesmo plano, então ou eles são o mesmo ponto ou formam um retângulo, certo?

 

  • Se você considerar um ponto como um retângulo o único ponto dentro do retângulo é o próprio, claro
  • Agora sobre o vértice inferior esquerdo e superior direito: esquerdo e direito é o valor de x certo?
  • E inferior e superior é o valor da coordenada y certo?
  • pode ser que os dois pontos tenham o mesmo x e aí você tem uma linha vertical. Tipo um retângulo bem fininho :D e todos os pontos com a segunda coordenada entre y e t estariam dentro
  • Pode ser que os dois pontos tenham o mesmo y e aí você tem uma linha horizontal. Tipo outro retângulo bem fininho e todos os pontos com a primeira coordenada entre x e z estariam dentro
  • Se os pontos são distintos então tem mesmo um retângulo e os pontos que estão dentro do retângulo são... Os que estão dentro do retângulo. Basta olhar as coordenadas entre os limites x/z e y/t...

Mais aritmética do que programação

 

area.png.4fe50685f294ad6285e08a04a81f7d33.png

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Poderia fazer assim:

#include <iostream>

struct Ponto {
    int x;
    int y;
};

int main() {
    /*
     *                              (10, 10)
     *      *-------------------------*
     *      :                         :
     *      :                         :
     *      :  (1, 5)                 :
     *      :   *                     :
     *      :                         :
     *      :                         :
     *      *-------------------------*
     *   (0, 0)
     */

    Ponto inferiorE = {0, 0};
    Ponto superiorD = {10, 10};
    Ponto ponto = {1, 5};

    bool dentro = false;

    if (ponto.x > inferiorE.x && ponto.y > inferiorE.y) {
        if (ponto.x < superiorD.x && ponto.y < superiorD.y) {
            dentro = true;
        }
    }

    std::cout << "O ponto está " << (dentro ? "dentro" : "fora") << ". \n";
    return EXIT_SUCCESS;
}

Cabe a você decidir se caso o ponto cair em cima da linha ele é considerado dentro ou não. No caso desse algoritmo ele é considerado fora.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!