Nie wiem czemu mi program nie działa, pomożecie?
Kod: Zaznacz cały
#include<stdio.h>
#include<string.h>
#include<math.h>
class Punkt {
public:
Punkt (); //utorz obiekt niezainicjowany- konstruktor
Punkt(float x, float y); //utworz obiekt ze wspolrzednych (x,y)- konstruktor
float x (); //wypisz wspolrzedna x
float y (); //wypisz wspolrzedna y
private:
float wsp_x; //wspolrzedna x
float wsp_y; //wspolrzedna y
};
Punkt::Punkt(float x, float y)
{
wsp_x=x;
wsp_y=y;
}
Punkt::Punkt()
{
}
float Punkt::x()
{
return wsp_x;
}
float Punkt::y()
{
return wsp_y;
}
class Prosta {
public:
Prosta(float Punkt_p1,float Punkt_p2); //utworz prosta prz pomocy dwoch punktow
float odleglosc(float Punkt_p); //znajdz odleglosc od punktu p
private:
//ax+by+c=0
float a;
float b;
float c;
};
Prosta::Prosta(Punkt p1,Punkt p2) //wyznacz prosta biegnaca przez punkty p1 i p2
{
if(p1.x()==p2.x())
{
a=1;
b=0;
c=-p1.x();
}
else
{
a=p2.y()-p1.y();
b=p1.x()-p2.y();
c=p1.y()*p2.x()-p2.y()*p1.x();
}
}
float Prosta::odleglosc(Punkt_p) //zwraca dystans od punktu p do linii
{
return fabs(a*p.x()+b*p.y()+c)/sqrt(a*a+b*b);
}
int main ()
{
float x1,x2,x3,x4,y1,y2,y3,y4;
printf("Podaj współrzędną x dla pierwszego dowolnego punktu: ");
scanf("%ld", &x1);
printf("Podaj współrzędną y dla pierwszego dowolnego punktu: ");
scanf("%ld", &y1);
printf("Podaj współrzędną x dla drugiego dowolnego punktu: ");
scanf("%ld", &x2);
printf("Podaj współrzędną y dla drugiego dowolnego punktu: ");
scanf("%ld", &y2);
printf("Podaj współrzędną x dla trzeciego dowolnego punktu: ");
scanf("%ld", &x3);
printf("Podaj współrzędną y dla trzeciego dowolnego punktu: ");
scanf("%ld", &y3);
printf("Podaj współrzędną x dla czwartego dowolnego punktu: ");
scanf("%ld", &x4);
printf("Podaj współrzędną y dla czwartego dowolnego punktu: ");
scanf("%ld", &y4);
Punkt p1(x1,y1); //deklaracja punktu p1
printf("Wspolrzedne punktu p1 to: %ld",p1.x(),p1.y()); //wypisz na ekranie wspolrzedne punktu p1
Punkt p2(x2,y2);
printf("Wspolrzedne punktu p2 to: %ld",p2.x(),p2.y());
Punkt p3(x3,y3);
printf("Wspolrzedne punktu p3 to: %ld",p3.x(),p3.y());
Punkt p4(x4,y4);
printf("Wspolrzedne punktu p4 to: %ld",p4.x(),p4.y());
Prosta f1(p1,p2); //deklaracja prostej f1
Prosta f2(p3,p4);
printf("Odleglosc miedzy punktem p1 a prosta f1 wynosi: %ld",f1.odleglosc(p1));
printf("Odleglosc miedzy punktem p1 a prosta f2 wynosi: %ld",f2.odleglosc(p1));
printf("Odleglosc miedzy punktem p4 a prosta f1 wynosi: %ld",f1.odleglosc(p4));
printf("Odleglosc miedzy punktem p4 a prosta f2 wynosi: %ld",f2.odleglosc(p4));
return 0;
}
error C2511: 'Prosta::Prosta(Punkt,Punkt)' : overloaded member function not found in 'Prosta'
error C2065: 'Punkt_p' : undeclared identifier
error C2448: 'Prosta::odleglosc' : function-style initializer appears to be a function definition
error C2664: 'Prosta::Prosta(float,float)' : cannot convert parameter 1 from 'Punkt' to 'float' available that can perform this conversion, or the operator cannot be called
i ten ostatni błąd jest powtórzony 5 razy.
Z góry dziękuję za pomoc.