• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Laborka z programowania

Object Storage Arubacloud
0 głosów
166 wizyt
pytanie zadane 12 maja 2020 w C i C++ przez Piotr282 Nowicjusz (210 p.)
#include <iostream>
using namespace std;

class Punkt2D
{
public:
	double x;
	double y;
	Punkt2D(double newX = 0, double newY = 0) 
	{
		x = newX;
		y = newY;
	}
	void wypisz()
	{
		cout << "X:\n" << x << "\n" << "\nY:\n" << y  << endl;
	}
};

class Punkt3D : public Punkt2D
{
public:
	double z;
	Punkt3D(double newZ = 0, double newX = 0, double newY = 0) : Punkt2D(newX, newY)
	{
		z = newZ;
	}

	void wypisz()
	{
		cout << "\nZ:\n" << z << endl;
	}
};

int  main()
{
	Punkt2D firstA(2, 2);
	firstA.wypisz();
	Punkt3D firstB(7);
	firstB.wypisz();
	return 0;
}

 

Zadanie. Stworzyć klasy Punkt2D (wewnątrz dwie zmienne double x , double y) i Punkt3D (wewnątrz
double z). Klasa Punkt3D dziedziczy po klasie Punkt2D W każdej klasie 1 konstruktor, w klasie
Punkt2D przyjmuje dwie zmienne typu double (przypisuje je do x i y), w klasie Punkt3D przyjmuje
3 zmienne typu double (wykorzystania konstruktora z klasy Punkt2D oraz przypisanie trzeciej
zmiennej do z). W utworzonych klasach Punkt2D i Punkt3D utworzyć metodę obliczającą
odległość pomiędzy dwoma punktami (w klasie Punkt3D metoda ma być przesłonięta).
Wszystkie dane podawane z klawiatury.

Сzy ktoś może pomoc wyjaśnić, jak zakończyć laboratorium?

Niew wiem tego: "W utworzonych klasach Punkt2D i Punkt3D utworzyć metodę obliczającą
odległość pomiędzy dwoma punktami (w klasie Punkt3D metoda ma być przesłonięta).
Wszystkie dane podawane z klawiatury."

1. Gdzie trzeba wstawic 'cin' dla: dane podawane z klawiatury.

(Wiem, co tam jest moje dany double 2, 2, 7 to dla ogl.)

2. I jeśli zobaczysz jakiś błąd, pokaż mi i wyjaśnij, proszę.

1 odpowiedź

0 głosów
odpowiedź 15 maja 2020 przez profesorek96 Szeryf (91,420 p.)

Po pierwsze radzę ci się wziąć się porządnie za naukę programowania, a w szczególności obiektowości. Polecam ci tą książkę by zrozumieć koncepcję obiektowości.

https://helion.pl/ksiazki/myslenie-obiektowe-w-programowaniu-wydanie-v-matt-weisfeld,myobp5.htm#format/d

Teraz trzeba sobie zadać pytanie co to jest przesłonięcie metody. Weźmy pod lupę twój kod. W klasie Punkt2D masz metodę o nazwie wypisz. Jeśli tworzysz klasę Punkt3D która dziedziczy po klasie Punkt2D to tak właśnie klasa za sprawą dziedziczenia uzyskuje metodę wypisz z klasy bazowej (Punkt2D). Jeśli ty zapragniesz zdefiniować nową wersję metody która istnieje w klasie bazowej, to twoja nowa metoda "zasłoni" metodę odziedziczoną.

Zobacz na kod poniżej.

#include <iostream>
#include <cmath>
using namespace std;
 
class Punkt2D
{
public:
    double x;
    double y;
    Punkt2D(double newX = 0, double newY = 0) 
    {
        x = newX;
        y = newY;
    }
    void wypisz()
    {
        cout << "X:" << x << " " << "Y:" << y  << endl;
    }
    double odleglosc(const Punkt2D &tmp)
    {
    	return sqrt(((x-tmp.x)*(x-tmp.x))+((y-tmp.y)*(y-tmp.y)));
    }
};
 
class Punkt3D : public Punkt2D
{
public:
    double z;
    Punkt3D(double X, double Y, double Z) : Punkt2D(X, Y)
    {
        z = Z;
    }
 
    void wypisz()//przeciazasz metode z klasy Punkt2D wiec powinna byc tak
    {
        cout << "X:" << x << " " << "Y:" << y  <<" Z:"<<z<<endl;
    }
    double odleglosc(const Punkt3D &tmp)
    {
    	return sqrt(((x-tmp.x)*(x-tmp.x))+((y-tmp.y)*(y-tmp.y))+((z-tmp.z)*(z-tmp.z)));
    }
};
 
int  main()
{
	double x,y,z;
	cin>>x>>y;
    Punkt2D A_2D(x, y);
    cin>>x>>y;
    Punkt2D B_2D(x, y);
    cout<<"Odleglosc miedzy dwoma punktami w 2D:"<<A_2D.odleglosc(B_2D)<<endl;
    
    cin>>x>>y>>z;
    Punkt3D A_3D(x,y,z);
    cin>>x>>y>>z;
    Punkt3D B_3D(x,y,z);
    
    cout<<"Odleglosc miedzy dwoma punktami w 3D:"<<A_3D.odleglosc(B_3D)<<endl;
    
    return 0;
}

Rozwiązanie laborki powinno wyglądać podobnie do tego co wyżej. Odległość między dwoma punktami to nic innego jak tak zwana odległość Euklidesowa. Wzór bez trudu można znaleźć w sieci.

Podobne pytania

0 głosów
1 odpowiedź 277 wizyt
0 głosów
1 odpowiedź 184 wizyt
0 głosów
0 odpowiedzi 288 wizyt
pytanie zadane 31 maja 2020 w C i C++ przez Piotr282 Nowicjusz (210 p.)

92,570 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...