Aplikacja konsolowa sumująca pary liczb

0

Cześć, mam mały problem z kodem odnośnie dziedziczenia. Kod podany poniżej. Program ma wyglądać tak, że podajemy liczbe x i y, np 6 i 4, program wyświetli ją na ekranie, następnie podajemy kolejny x i y który doda się do wcześniejszych liczb czyli np. 5 i 2, wtedy program sumuje wcześniejszą liczbę do kolejnej i wyświetli wynik, w tym przypadku x = 11, y = 8. Czy mógłby ktoś poradzić, w którym miejscu jest błąd i jak go naprawić? Z góry dziękuje

#include <iostream>
using namespace std;

class Punkt{
	int x,y;
	public:
		Punkt(int a, int b){
			x=a; y=b;
		}
		int return_x(){
			return x;
		}
		int return_y(){
			return y;
		}
		void wyswietl(int x, int y){
			cout<<"Twoje podane liczby to: "<<endl;
			cout<<"x= "<<x<<endl;
			cout<<"y= "<<y<<endl;
		}
};

class Punkt1 : public Punkt{
	public:
		Punkt1(int a, int b){
			x=a+x; y=b+y;
		}
		void wyswietl(int x, int y){
			cout<<"Przesuniete: "<<endl;
			cout<<"x= "<<x<<endl;
			cout<<"y= "<<y<<endl;
		}
};


int main(){
	int a,b;
	cout<<"Podaj a: "; 
	cin>>a;
	cout<<"Podaj b: "; 
	cin>>b;
	a=pkt1.return_x();
	b=pkt1.return_y();
	Punkt pkt(a,b);
	pkt.wyswietl();
	
	cout<<"Podaj przesuniety a: ";
	cin>>a;
	cout<<"Podaj przesuniety b: ";
	cin>>b;
	Punkt1 pkt(a,b);
	x=pkt2.return_x();
	y=pkt2.return_y();
	pkt.wyswietl();
	
	return 0;
}
3

Tylko nie rozumiem po ch..ińskiego tu dziedziczenie?

#include <iostream>
using namespace std;

class Punkt
{
	private:
	int x,y;
	public:
    Punkt():x(0),y(0) {}
	void move(int x,int y)
    {
        this->x+=x;
        this->y+=y;
        show();
    }
	void show() { cout<<"Wspolrzedne ("<<x<<','<<y<<")"<<endl; }
};

int main()
{
	Punkt pkt;
    for(int x,y;(cout<<"Podaj x y: ")&&(cin>>x>>y);) pkt.move(x,y);
	return 0;
}
0
_13th_Dragon napisał(a):

Tylko nie rozumiem po ch..ińskiego tu dziedziczenie?

A no właśnie tak na zajęciach kazali... niestety.

2
Szymon Fotografia napisał(a):
_13th_Dragon napisał(a):

Tylko nie rozumiem po ch..ińskiego tu dziedziczenie?

A no właśnie tak na zajęciach kazali... niestety.

ja tam zachowuję 66% (jednak) wiary w nauczycieli, i obstawiam, że raczej z lekka przekreciłęś temat.
jak brzmi naprawdę ?

0

Mam zastosować dziedziczenie, i zrobić program, do którego podaje liczbę dla x, i dla y, te wartości są następnie wyświetlane, potem do tych wartości podać kolejne co sprawi, że doda się to do wcześniejszej podanej i wyświetli wynik - mniej więcej tak:

Podaj x: 6
Podaj y: 3
Podales x=6, y=3
Podaj x: 1
Podaj y: 1
Końcowy wynik x=7, y=4
0

Coś udało lekko mi się pozmieniać złym sposobem i jednak teraz się kompiluje, tylko gdy podaje już te kolejne wartości to wyświetla x=0, y=1,

#include <iostream>
using namespace std;

class Punkt{
    int x,y;
    public:
        Punkt(int a, int b){
            x=a; y=b;
        }
        int return_x(){
            return x;
        }
        int return_y(){
            return y;
        }
        void wyswietl(int x, int y){
            cout<<"Twoje podane liczby to: "<<endl;
            cout<<"x= "<<x<<endl;
            cout<<"y= "<<y<<endl;
        }
};

class Punkt1 : public Punkt{
    public:
        Punkt1();
        void przesun(int x, int y, int a, int b){
            x=a+x; y=b+y;
        }
        void wyswietl(int x, int y){
            cout<<"Przesuniete: "<<endl;
            cout<<"x= "<<x<<endl;
            cout<<"y= "<<y<<endl;
        }
};

int main(){
    int a,b,x,y;
    cout<<"Podaj a: "; 
    cin>>a;
    cout<<"Podaj b: "; 
    cin>>b;
    Punkt pkt(a,b);
    pkt.wyswietl(a,b);
    
    cout<<"Podaj przesuniety a: ";
    cin>>a;
    cout<<"Podaj przesuniety b: ";
    cin>>b;
    Punkt1 pkt1();
    pkt.wyswietl(x,y);
    
    return 0;
}
0
#include <iostream>
using namespace std;

class Punkt
{
	protected:
	int x,y;
	public:
    Punkt(int x,int y):x(x),y(y) { show("Podales"); }
    static bool input(int &x,int &y) { return (cout<<"Podaj x y: ")&&(cin>>x>>y); }
	void show(const char *msg) { cout<<msg<<" ("<<x<<','<<y<<")"<<endl; }
};

class PunktMove:public Punkt
{
	public:
    PunktMove(const Punkt &p):Punkt(p) {}
	void move(int x,int y)
    {
        Punkt::x+=x;
        Punkt::y+=y;
        show("Końcowy wynik");
    }
};


int main()
{
	int x,y;
	Punkt::input(x,y);
	Punkt p(x,y);
    for(PunktMove m(p);Punkt::input(x,y);) m.move(x,y);
	return 0;
}
2

No dobra, ale dziedziczenie tu jest po co?

Bo wydaje się dodane zupełnie bez sensu.

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