Przesunięcie (x,y) oraz przesunięcie o wektor prostokąta

0

Witam, potrzebuję pomocy w napisaniu metody przesun(x,y) i przesun(wek) przesuwającą prosotkąt o wskazany wektor. Nie mam pojęcia jak zacząć, proszę o wskazówki.

PS. Potrzebuję również dodać co najmniej 2 destruktory, aczkolwiek nie wiem w których miejscach.

Kod do programu wygląda następująco:


// PLIK TEST1.H

#include <iostream>

using namespace std;

class Punkt
{
    string nazwa;
    float x,y;

public:
    Punkt(string="A",float=0,float=0);
    void wczytaj();
    void wyswietl();
};

class Prostokat
{
    string nazwa;
    float x,y,szerokosc,wysokosc;

public:
    Prostokat(string="brak",float=0,float=0,float=1,float=1);
    void wczytaj();
    void info();
    void pole();
    void obwod();
    void przesun_o_pkt();
    void przesun_o_wektor();
};

// PLIK TEST1.CPP

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

Punkt::Punkt(string n,float xx,float yy)
{
    nazwa=n;
    x=xx;
    y=yy;
}

void Punkt::wczytaj()
{
    cout << "   Nowy Punkt" <<endl;
    cout << "Podaj x: " ; cin>>x;
    cout << "Podaj y: " ; cin>>y;
    cout << "Nazwa Punktu: " ; cin>>nazwa;
}

void Punkt::wyswietl()
{
    cout << endl;
    cout << "Punkt "<<nazwa<<" o wspolrzednych: " << "(" << x << "," << y << ")" <<endl;
}


//%%%%%%%%%%% WYZEJ FUNKCJE PUNKTU // // NIZEJ FUNKCJE PROSTOKATA %%%%%%%%%%%%%%%%%%


Prostokat::Prostokat(string n,float xx, float yy, float s, float w)
{
    nazwa=n;
    x=xx;
    y=yy;
    szerokosc=s;
    wysokosc=w;
}
void Prostokat::wczytaj()
{
    cout << endl;
    cout << "    Nowy Prostoakt" << endl;
    cout << "Podaj x lewego dolnego naroznika: " ; cin>>x;
    cout << "podaj y lewego dolnego naroznika: " ; cin>>y;
    cout << "Podaj szerokosc: " ; cin >> szerokosc;
    cout << "Podaj wysokosc: " ; cin >> wysokosc;
    cout << "Podaj nazwe prostokowa: " ; cin >> nazwa;
}

void Prostokat::info()
{
    cout << endl;
    cout << "Lewy Dolny Punkt Prostokata "<<nazwa<<" o wspolrzednych: " << "(" << x << "," << y << ")" << endl;
}

void Prostokat::obwod()
{
    cout << endl;
    cout << "Obwod Prostokata wynosi: "<< (2*szerokosc)+(2*wysokosc) << endl;
}

void Prostokat::pole()
{
    cout << endl;
    cout << " Pole prostokata wynosi: "<< szerokosc*wysokosc <<endl;
}

void Prostokat::przesun_pkt()
{
    // %%%%%%%%%%%%%%%%%%%%%%%%%% //
}

void Prostokat::przesun_o_wektor()
{
    // %%%%%%%%%%%%%% //
}


// PLIK MAIN.CPP

#include <iostream>
#include "test1.h"

using namespace std;

int main()
{
    Punkt pkt1;
    pkt1.wczytaj();
    pkt1.wyswietl();

    Prostokat p1;
    {
    p1.wczytaj();
    p1.info();
    p1.obwod();
    p1.pole();
    }

    return 0;
}

1

Destruktory dodaj po jednym defaultowym w klasie Punkt oraz klasie Prostokat.
Po co ci klasa Punkt skoro jej nie używasz?
Metoda przesuń(x, y) ma ustawić nowe wartości pól x i y klasy Prostokat,
natomiast metoda przesun(wek) zmienia wartość x o wartość wek.x oraz y o wartość wek.y.

0

Punkt to po prostu zadanie na zajęcia.

Czy przesuń(x,y) może wyglądać następujaco? :


void Prostokat::przesun_pkt()
{
 int px,py;

 cout<<"o ile chcesz przesunac pkt x? :"; cin>>px;
 cout<<"o ile chcesz przesunac pkt y? :"; cin>>py;

 px=x+px;
 py=y+py;

 cout << "przesunales wektor :"<<x<<","<<y<<" na: "<<px<<","<<py<<endl;
}

(pisane na szybko)

PS. Nie wiem jak wykonać przesunięcie o wektor, mógłby ktoś napisać krok po kroku jak to uczynić?

0

dodaj x i y wektora do punktów (x, y) prostokąta... innymi słowy przesuń wszystkie punkty prostokąta o podany wektor.

0

czyli mam stworzyc wektor [x,y] a nastepnie zapytać uzytkownika "o ile chce przsunac" a nastepnie poleceniem push.back dodac podaną wartość do tego wektora?

0

Wiesz co to wektor w matematyce, czy wiesz tylko co to kontener vector w C++?

Napisz klasę wektor, która ma pola X i Y. Wszystkie punkty prostokąta to też wektory. Możesz dla tej klasy przeciążyć operator + i bedziesz mógł elegancko dodawać wektory.

Wczytywanie danych do wektora to też po prostu wczytywanie wartości dla x i y w tym wektorze.

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