Kolokwium 2 w 1 (2)


Kolokwium 2 W 1 CPP

  1. Stworzyć klasę abstrakcyjną Body, zawierającą objętość ciała double vol, funkcji abstrakcyjne void calc_volume(), void disp(). Zadaniem calc_volume jest obliczenie objętości ciała, a disp() wyprowadza na monitor wynik obliczeń vol.

Stworzyć klasy pochodne Sphera i Cube.

Sphera zawiera:

double r; // promień

const double pi; // stałą pi

char *str; //wskaźnik do wiersza tekstowego - nazwa sphery.

Sphera(double rr, char *sstr); //Konstruktor sparametryzowany dynamicznie alokuje pamięć

//dla wiersza tekstowego str i inicjuje zmienne r, pi.

~Sphera(); //Destruktor zwalnia pamięć

void calc_volume(); //przesłonięta funkcja wirtualna w klasie Sphera liczy objętość spherzy

//4/3*pi*r3 .

void disp(); //wyprowadza na monitor str i vol.

Cube zawiera:

double a; // długość boku

char *str; //wskaźnik do wiersza tekstowego - nazwa kuby.

Cube(double aa, char *sstr); //Konstruktor sparametryzowany dynamicznie alokuje pamięć

//dla wiersza tekstowego str i inicjuje zmienną a.

~ Cube (); //Destruktor zwalnia pamięć

void calc_volume(); //przesłonięta funkcja wirtualna w klasie Cube liczy objętość kuby

//vol = a3 .

void disp(); //wyprowadza na monitor str i vol.

Nic nie zmieniając w kodzie funkcji main stworzyć program.

int _tmain(int argc, _TCHAR* argv[])

{

Body * ptr_tab[4];

ptr_tab[0] = new Sphera(1, "sphera A");

ptr_tab[1] = new Sphera(2, "sphera B");

ptr_tab[2] = new Cube(1, "cube C");

ptr_tab[3] = new Cube(2, "cube D");

for(size_t it=0; it<4; ++it)

{

ptr_tab[it]->calc_volume();

ptr_tab[it]->disp();

delete ptr_tab[it];

}

return 0;

}

  1. Dla podanej klasy B i kodu funkcji main uzupełnić program tak, żeby działał poprawnie.

class B

{

double *ptr;

public:

B(double a[], size_t noit); //konstruktor: alokuje pamięć i kopiuje tablicę a do

//tablicy ptr

~B(); //destruktor: zwalnia pamięć

};

B::B(double a[], size_t noit)

{

ptr = new double [noit];

memcpy(ptr, a, noit*sizeof(double));

}

B::~B()

{

delete [] ptr;

}

int _tmain(int argc, _TCHAR* argv[])

{

double aa[] = {

0.1, 0.2, 0.3

};

double bb[] = {

10, 20, 30, 40

};

B ob1(aa, sizeof(aa)/sizeof(double)), ob2(bb, sizeof(bb)/sizeof(double));

cout << "ob1 " << ob1 << endl << "ob2 " << ob2 << endl;

ob2 = ob1;

cout << "ob2 " << ob2 << endl;

return 0;

}



Wyszukiwarka

Podobne podstrony:
do kolokwium interna
WODA PITNA kolokwium
KOLOKWIUM 2 zadanie wg Adamczewskiego na porownawczą 97
kolokwium 1
Materiały do kolokwium III
Fizjologia krążenia zagadnienia (II kolokwium)
Algebra liniowa i geometria kolokwia AGH 2012 13
analiza funkcjonalna kolokwium
kolokwiumzTMIC
kolokwium probne boleslawiec id Nieznany
Kolokwium (2)
Opracowanie pytań 2 kolokwium
material obowiazujacy do kolokwiow z chemii analitycznej iiwf 2014
BwUE wyniki kolokwium 2012 2013

więcej podobnych podstron