Referencje, wskazniki sam już nie wiem czego użyć.

0

Witam mam zadanie na studiach do którego nie potrafie podejśc w właściwy sposób.
Otóz, mam klase

classa test
{
int z;
int p;
public:
void sprawdzanie();

}

Oraz utworzone dwa obiekty tej klasy, które mają argumenty z oraz p.

Teraz chciałbym operować w metodzie sprawdzanie(), na danych z tych obiektow. Jednak totalnie nie mam pojęcia jak to zrobić. Tak by np dodac punkty z obydwóch obiektów i zwrócić ich sume.

2

Opisz po ludzku jaki masz problem i co chcesz osiągnąć, bo na razie to jeden wielki opis problemu XY

Staraj sie też używać słownictwa, które rozumiesz.

0

Jak wczytać dane dwóch obiektów danej klasy do funkcji tak by można było wykonywać na nich operacje.

2

Poniżej masz przykad:

#include <iostream>

using namespace std;

class test
{
public:
   test(int a=1, int b=2) : z(a), p(b) {}
   int z;
   int p;
};

int add(test& test1, test& test2){ 
    return test1.z + test2.z;
}

int main(){
test t1;
test t2;
int a = add(t1, t2);
std::cout << a;
return 0;
}

0
#include <iostream>
using namespace std;

class test
{
	private:
	int z,p;
	public:
	test(int z=1,int p=2):z(z),p(p) {}
	test operator+(const test &t)const { return test(z+t.z,p+t.p); }
	friend ostream &operator<<(ostream &s,const test &t) { return s<<'('<<t.z<<','<<t.p<<')'; }
};

int main()
{
	test t1(4,5),t2(6,7),t3=t1+t2;
	std::cout<<t1<<" + "<<t2<<" = "<<t3<<endl;;
	return 0;
}
0
#include <iostream>
#include <math.h>
using namespace std;

class okrag
{
    double promien;
    double Px;
    double ob;
    double nowy_Px1;
    double nowy_Px2;


public:
    void wprowadz();
    void obwod();
    void punkt_x_przesuniety();





};
//metoda wprowadzajaca dane do obiektow
    void okrag::wprowadz()
   {
    //wiem, ¿e tworze niepotrzebny kod tutaj ale zostawy to tak jak jest.
       cout<<endl<<"Podaj promien ";
       cin >> promien;
       if(promien > 0)
       {
       cout<<"Podaj punkt X ";
       cin >> Px;
       }
       else
       {
       cout << " Promien byl mniejszy lub rowny 0. "<<endl;
       cout << "Podaj promien jeszcze raz ";
       cin >> promien;
       cout<<"Podaj punkt X ";
       cin >> Px;
       }


   }
// liczymy obwod
   void okrag::obwod()
   {

      ob = 2 * M_PI * promien;
      cout << ob << endl;
   }
   void okrag::punkt_x_przesuniety()
   {
   nowy_Px1 = Px+promien;
   cout <<endl <<"Punkt x przesuniety w prawo "<<  nowy_Px1;
   nowy_Px2 = Px-promien;
   cout <<endl <<"Punkt x przesuniety w lewo "<<  nowy_Px2;
   }








int main()
{
    okrag okrag1;
    {
    okrag1.wprowadz();
    cout <<"Obwod pierwszego okregu jest rowny "; okrag1.obwod();
    okrag1.punkt_x_przesuniety();
    }

    okrag okrag2;
    {
    okrag2.wprowadz();
    cout <<"Promien drugiego okregu jest rowny "; okrag2.obwod();
    okrag2.punkt_x_przesuniety();

    }





}






Nadal nie wiem jak zapisać metodę sprawdzającą czy te 2 okręgi mają punkt wspólny. Jak wydobyć do metody okrag1.nowy_Px1, okrag1.nowy_Px2, okrag2.nowyPx1, okrag2.nowy_Px2.
Samą logikę wiem jak zapisać ale jak wyciągnąć te dane.
Wiem, że prawdopodobnie gdzieś w sieci są rozwiązania tego problemu bo to zadanie dla dużej liczby studentów mojej politechniki, jednak chciałbym zrobić to samemu, wiem również, że brakuje mi konstruktora i dekonstruktora ale je dodam na samum koncu.

2

Spróbuj to zrobić według poniższego przykładu.

#include <iostream>
#include <cmath>

using namespace std;

class Circle
{
public:

    Circle( double _x , double _y , double _r ) : x{_x}, y{_y}, r{_r} {}

    bool isIntersect( const Circle& c ) const 
    {
        return sqrt( (x-c.x)*(x-c.x) + (y-c.y)*(x-c.y) ) < r+c.r;
    }

private:

    double x {0};
    double y {0};
    double r {0};
};

int main()
{
    Circle c1 { 0,0,4 };
    Circle c2 { 1,1,3 };

    cout << "c1 intersect with c2 : " << (c1.isIntersect( c2 )?"true":"false") << endl ;

    return 0;
}
0
#include <iostream>
#include <cmath>
using namespace std;

class Circle
{
	public:
	Circle(double x,double y,double r):x(x),y(y),r(r) {}
	bool operator&(const Circle &c) const { return sqrt((x-c.x)*(x-c.x)+(y-c.y)*(x-c.y) )<r+c.r; }
	Circle move(double x,double y)const { return Circle(this->x+x,this->y+y,r); }
	friend ostream &operator<<(ostream &s,const Circle &c) { return s<<"("<<x<<","<<y<<":"<<r<<); }
	private:
	double x,y,r;
};

int main()
{
    Circle c1 (0,0,4),c2(1,1,3);
    cout<<c1<<" intersect with "<<c2<<": "<<(c1&c2)?"true":"false")<<endl ;
    cout<<c1<<" moved by (3,4): "<<c1.move(3,4)<<endl;
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1