Funkcja zwracająca w klasie

0

Witam!
Mam napisać taki mały programik o współrzędnych x i y . Stworzyłem klasę konstruktor domyślny,konstruktor dwuargumentowy i funkcję wyświetlającą za pomocą przeładowania operatora. Pozostała mi jeszcze do napisania funkcja zwracająca wartość x i y oraz zapisująca nową wartość tych punktów. Nie wiem za bardzo w jaki sposób to zrobić dlatego proszę o pomoc.

#include "stdafx.h"
#include <iostream>
using namespace std;

class punkt
{
float pointx;
float pointy;
public:
	punkt()
	{
		pointx=0;
		pointy=0;
	}
friend	ostream & operator << (ostream &ekran,punkt z);
	punkt(float x ,float y);

};
punkt::punkt(float x, float y)
{
	pointx=x;
    pointy=y;
}

ostream & operator << (ostream &ekran,punkt z)
{
	cout << z.pointx << "," << z.pointy ;
	return ekran;
}
int main()
{
	punkt P(5,2);
	cout<<P;
  return 0;
} 
0

Tyle napisales a nie wiesz jak zrobic metody

int punkt::getX() const ;
void punkt::setX(int);

wtf?;]

0

of course float, a nie int. Sorry ;-)

0

Witam!
Mógłby ktoś zobaczyć czy na razie jest dobrze :

class punkt
{
float pointx;
float pointy;
public:
        punkt()
        {
                pointx=0;
                pointy=0;
        }
friend        ostream & operator << (ostream &ekran,punkt z);
        punkt(float x ,float y);
		float GetX(float x);
		float GetY(float y);

};
punkt::punkt(float x, float y)
{
        pointx=x;
    pointy=y;
}

ostream & operator << (ostream &ekran,punkt z)
{
        cout << z.pointx << "," << z.pointy ;
        return ekran;
}
float punkt::GetX(float x)
{
	return x;
}

float punkt::GetY(float y)
{
	return y;
}
int main()
{
        punkt P(5,2);
        cout<<P<<endl;
		cout<<P.GetX(2);// zwracanie x
        cout<<P.GetY(34);// zwracanie y
  return 0;
} 

A jak zapisać tą nową wartość do współrzędnej to nadal nie wiem...

0

Po co w obecnej postaci sa funkcje getX i GetY? Zwracają one przecież liczbę podana w argumentach, nic nie przypisują!!!

0

Bez kitu to było bez sensu...
Poprawiony kod :

#include "stdafx.h"
#include <iostream>
using namespace std;

class punkt
{
float pointx;
float pointy;
public:
        punkt()
        {
                pointx=0;
                pointy=0;
        }
friend ostream & operator << (ostream &ekran,punkt z);
        punkt(float x ,float y);
   float GetX()
   {
      return pointx;
   }

   float GetY()
   {
      return pointy;
   }
void SetX(float x)
{
   pointx=x;
}
};
punkt::punkt(float x, float y)
{
        pointx=x;
        pointy=y;
}

ostream & operator << (ostream &ekran,punkt z)
{
        cout << z.pointx << "," << z.pointy ;
        return ekran;
}

int main()
{
        punkt P(5,2),K;
      
        cout<<P<<endl;
      cout<<P.GetX()<<endl;
      cout<<P.GetY()<<endl;
        P.SetX(7);
}  

Teraz jest już ok?

0

Ale ja mam to w klasie wstawić ? Bo jak to robię to program przestaje mi się kompilować

0

Chciałbym jeszcze napisać funkcję która liczy odległość punktu od układu punktu (0,0) . Napisałem tą funkcję ale kompilator wypisuję mi że brakuj średnika. Załączam kod:

include "stdafx.h"
#include <iostream>
using namespace std;
#include <math.h>

class punkt
{
float pointx;
float pointy;
public:
        punkt()
        {
                pointx=0;
                pointy=0;
        }
friend ostream & operator << (ostream &ekran,punkt z);
        punkt(float x ,float y);
		float GetX()
	{
		return pointx;
	}

		float GetY()
	{
		return pointy;
	}
		void SetX(float x)
{
	pointx=x;
}
		void SetY(float y)
{
	pointy=y;
}
float Distance(float x , float y);

};
punkt::punkt(float x, float y)
{
        pointx=x;
        pointy=y;
}

ostream & operator << (ostream &ekran,punkt z)
{
        cout << z.pointx << "," << z.pointy ;
        return ekran;
}
float punkt::Distance(float x ,float y)
{
	return ((sqrt(pow(x,2)+pow(y,2)));

}


int main()
{
        punkt P(5,2),K;
		
        cout<<P<<endl;
		cout<<P.GetX()<<endl;
		cout<<P.GetY()<<endl;
        P.SetX(7);
		P.SetY(23);
		cout<<P<<endl;
}   
 
0

Zabrakło ci średnika w tym returnie

0

No przecież wszędzie są średniki !

0
return ((sqrt(pow(x,2)+pow(y,2)));

Tutaj powinno być

return ((sqrt(pow(x,2)+pow(y,2))));

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.