Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα και πάλι,

δεν μπορώ να καταλάβω που έχω λάθος στον παρακάτω κώδικα.

Καταρχάς να σας πω τι θέλω να κάνω

 

Θέλω μια public συνάρτηση Shape::setPoint(int n, Point p) η

οποία θέτει στο nth(1η παράμετρος) σημείο του σχήματος(ένα πίνακας είναι) το σημείο p

που δίνεται σαν 2η παράμετρος. (Point είναι μια άλλη κλάση)

Η συνάρτηση μου είναι η εξής

 

 

void Shape::setPoint(int x,Point po)

{

if(x<=n && x>0) //κάνω έναν έλεγχο

{

pin[x-1] = po;

}

else

{

cout<<"Warning:point number out of range \n";

 

και από την main την καλώ ως εξής

 

s2.setPoint(1,c); //όπου s2 αντικείμενο της Shape και c αντικείμενο της Point

 

ωστόσο δεν μου κάνει την αντιμετάθεση.

Μπορείτε να μου πείτε τι φταίει?

thnks!

Δημοσ.

Δεν μας δίνεις όλον τον κώδικα μπας και βγάλουμε άκρη;

 

ωστόσο δεν μου κάνει την αντιμετάθεση.

Τι θες να κάνεις αντιμετάθεση; Δεν βλέπω καμιά αντιμετάθεση στο κομμάτι κώδικα που έδωσες.

Δημοσ.

λοιπόν ο κώδικας είναι αυτός

 

 

//5890

#include <iostream>

#include <cstring>

using namespace std;

 

class Point{

 

public:

double x,y;

Point(double a, double B){x=a; y=b;};

Point(){x=0; y=0;};

 

};

 

class Shape{

int n; //ari8mos shmeiwn

Point *pin; //pinakas me tis suntetagmenes

public:

Shape(int o,Point *p);

Shape(){cout<<"Warning: shape has no points \n";};

void setPoint(int x,Point po);

void set(int y,Point* pi);

void printPoints();

};

 

 

Shape::Shape(int o,Point *p)

{

n=o;

pin = new Point[o];

for(int i=0;i<o;i++)

{

pin=p;

}

}

void Shape::setPoint(int x,Point po)

{

if(x<=n && x>0)

{

pin[x-1] = po;

}

else

{

cout<<"Warning:point number out of range \n";

}

}

void Shape:: set(int y,Point* pi)

{

if(y>0)

{

delete[]pin;

n=y;

pin = new Point[y];

for(int i=0;i<y;i++)

{

pin=pi;

}

 

}

}

void Shape::printPoints()

{

for(int i=0;i<n;i++)

{

cout<<(i+1)<<":("<<pin.x<<","<<pin.y<<")"<<" ";

}

cout<<"\n";

}

 

 

 

 

 

 

int main ()

{

int n;

Point a(0.3,0.5),c(2,7),d(3,5),b(12,17);

 

 

cout<<"Dwste ton ari8mo twn shmeiwn \n";

cin>>n;

Point *points;

points = new Point[n];

points[0]=a;

points[1]=b;

points[2]=c;

points[3]=d;

Shape s2(n,points);

s2.setPoint(1,c);

s2.set(3,points);

s2.printPoints();

 

 

 

 

//cout<<"x="<<a.x<<"\n";

//cout<<"y="<<a.y<<"\n";

 

 

 

//delete points;

system("pause");

return 0;

}

Αυτό που μου ζητάει είναι

 

Υλοποιήστε την public συνάρτηση Shape::set(int m , Point* p) η οποία

αναθέτει σε ένα σχήμα τα m σημεία (1η παράμετρος) του πίνακα (2η

παράμετρος), αντικαθιστώντας όλα τα σημεία του σχήματος Shape.

 

pin[x-1] = po; //σε αυτό το σημείο δεν θα έπρεπε να κάνει την αντικατάσταση?

Δημοσ.

Ναι αλλά τελικά ξαναβάζεις τα 3 πρώτα points , μήπως να γράψεις το setPoint μετά.

>
Shape s2(n,points);
s2.setPoint(1,c);
s2.set(3,points);
s2.printPoints();

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...