Pertanyaan: Pertimbangkan struktur untuk mewakili sebuah titik dalam ruang 2D dan menerapkan fungsi yang menunjukkan apakah titik p yang diberikan terletak di dalam atau di luar persegi panjang. Persegi panjang ditentukan oleh simpul kiri bawah v1 dan kanan atas v2. Fungsi THE harus mengembalikan true jika titik terletak di dalam persegi panjang, dan false sebaliknya. Fungsi ini harus mengikuti prototipe berikut: bool dentroRetangulo(Ponto* v1, Ponto* v2, Ponto* P);

Kode saya:

using namespace std;

struct Ponto{
    int x;
    int y;
};

bool dentroRetangulo(Ponto* v1, Ponto* v2, Ponto* P){
    if ((P.x>=v1.x && P.x<=v2.x)&&(P.y>=v1.y && P.y<=v2.y))
        return true;
    
    return false;
}

int main(){

    Ponto v1,v2,P;
    //int x, y;

    cout << "Insert the X and Y from the vertex of the lower left rectangle: \n";
    cout << "X = ";
    cin >> v1.x;
    cout << "Y = ";
    cin >> v1.y;
    cout << "Insert the X and Y from the vertex of the upper right rectangle: \n";
    cout << "X = ";
    cin >> v2.x;
    cout << "Y = ";
    cin >> v2.y;

    cout << "The coordinates of the rectangle vertices are: "<<"("<<v1.x <<"," <<v1.y<<")"<<"(" <<v2.x<<","<< v2.y<<")"<<endl;
    cout<<"\nEnter the position of the point"<<endl;
    cout<<"X = ";
    cin>>P.x;
    cout<<"Y = ";
    cin>>P.y;

    if (dentroRetangulo(v1, v2, P){}  // Here I am not able to call the function correctly due to the pointer
        cout<<"\nThis Point is inside the Rectangle !"<<endl;
        cout<<"("<<P.x<<")"<<" "<<"("<<P.y<<")"<<endl;
    }else{
        cout<<"This point is outside the rectangle !"<<endl;
    }
    return 0;

}
c++
0
Bruno 12 Mei 2021, 06:41

1 menjawab

Jawaban Terbaik

Untuk tanda tangan bool dentroRetangulo(Ponto* v1, Ponto* v2, Ponto* P), Anda memiliki 3 argumen pointer. Jadi Anda perlu menggunakan -> untuk mengakses data anggota.

Untuk meneruskan argumen pointer, Anda perlu menggunakan &.

Pesan kesalahan kompilasi dari kompiler modern sangat jelas, cukup ikuti dan perbaiki kode Anda.

#include <ostream>
using namespace std;

struct Ponto {
  int x;
  int y;
};

bool dentroRetangulo(Ponto* v1, Ponto* v2, Ponto* P) {
  if ((P->x >= v1->x && P->x <= v2->x) && (P->y >= v1->y && P->y <= v2->y))
    return true;

  return false;
}

int main() {
  Ponto v1, v2, P;
  // int x, y;

  cout << "Insert the X and Y from the vertex of the lower left rectangle: \n";
  cout << "X = ";
  cin >> v1.x;
  cout << "Y = ";
  cin >> v1.y;
  cout << "Insert the X and Y from the vertex of the upper right rectangle: \n";
  cout << "X = ";
  cin >> v2.x;
  cout << "Y = ";
  cin >> v2.y;

  cout << "The coordinates of the rectangle vertices are: "
       << "(" << v1.x << "," << v1.y << ")"
       << "(" << v2.x << "," << v2.y << ")" << endl;
  cout << "\nEnter the position of the point" << endl;
  cout << "X = ";
  cin >> P.x;
  cout << "Y = ";
  cin >> P.y;

  if (dentroRetangulo(&v1, &v2, &P)) {  // Here I am not able to call the
                    // function correctly due to the pointer
    cout << "\nThis Point is inside the Rectangle !" << endl;
    cout << "(" << P.x << ")"
     << " "
     << "(" << P.y << ")" << endl;
  } else {
    cout << "This point is outside the rectangle !" << endl;
  }
  return 0;
}

demo online.

1
prehistoricpenguin 12 Mei 2021, 03:50