Ir ao conteúdo

Posts recomendados

Postado
#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
Postado

@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
Postado

É bem simples, um ponto só estará dentro do retângulo se esse ponto estiver entre os 2 vértices que foram digitados. É só verificar então se o px está entre o x1 e x2, e o py entre y1 e y2.

 

  • Curtir 2
Postado
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
Postado

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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!