• 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
169 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ź 314 wizyt
0 głosów
1 odpowiedź 200 wizyt
0 głosów
0 odpowiedzi 314 wizyt
pytanie zadane 31 maja 2020 w C i C++ przez Piotr282 Nowicjusz (210 p.)

92,691 zapytań

141,603 odpowiedzi

320,103 komentarzy

62,051 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

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!

...