Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Rozpatrzmy dwie struktury:
- struct kwadrat
- {
- double bok;
- kwadrat(double x): bok(x){}
- double pow(){return bok*bok;}
- };
- struct tygrys
- {
- string kolor;
- double rozmiar;
- tygrys(string a, double b):kolor(a), rozmiar(b){}
- };
- Skonstruować listę jednokierunkową, która zawierałaby powiązane obiekty typów kwadrat i tygrys. Napisać program sprawdzający
- skonstruowaną listę (Lista np. zawiera trzy obiekty typu tygrys i dwa obiekty typu kwadrat).
- */
- #include "stdafx.h"
- #include <iostream>
- #include <string>
- #include <queue>
- #include <fstream>
- class Obiekt{
- public:
- virtual void drukuj() = 0;
- };
- struct kwadrat : public Obiekt{
- public:
- double bok;
- kwadrat(): bok(0){};
- kwadrat(double x): bok(x){}
- double pow(){return bok*bok;}
- void drukuj(){
- std::cout << "Kwadrat ma bok o dlugosci: " << bok << " i pole: " << pow() << std::endl;
- }
- };
- struct tygrys : public Obiekt{
- public:
- std::string kolor;
- double rozmiar;
- tygrys():kolor("brak"), rozmiar(0){};
- tygrys(std::string a, double b):kolor(a), rozmiar(b){};
- void drukuj(){
- std::cout << "Tygrys ma kolor: " << kolor << " i rozmiar: " << rozmiar << std::endl;
- }
- };
- struct element{
- element* nastepny;
- void* zawartosc;
- }typedef element;
- class Lista{
- element* glowa;
- element* biezacy;
- public:
- Lista(){
- glowa = NULL;
- biezacy = glowa;
- }
- ~Lista(){
- element* nast;
- biezacy = glowa;
- while(biezacy != NULL){
- nast = biezacy->nastepny;
- delete biezacy;
- biezacy = nast;
- }
- }
- void dodaj(void* nowy){
- element *wskElem = new element;
- wskElem->nastepny = glowa;
- wskElem->zawartosc = nowy;
- glowa = wskElem;
- }
- void pierwszy () {
- biezacy = glowa;
- }
- int koniec(){
- return (biezacy == NULL);
- }
- void* kolejny(){
- void* wskNast = NULL;
- if(biezacy != NULL){
- wskNast = biezacy->zawartosc;
- biezacy = biezacy->nastepny;
- }
- return wskNast;
- }
- void drukujListe(){
- Obiekt * wskOb;
- pierwszy();
- while( !koniec() ){
- wskOb = (Obiekt*) kolejny();
- wskOb->drukuj();
- }
- }
- };
- int main(){
- kwadrat k1(2),k2(4);
- tygrys t1("czarny", 1.80),t2("pomaranczowy", 2.20),t3("brazowy", 1.95);
- Lista l;
- l.dodaj(&k1);
- l.dodaj(&t1);
- l.dodaj(&k2);
- l.dodaj(&t2);
- l.dodaj(&t3);
- l.drukujListe();
- system("PAUSE");
- }
Advertisement
Add Comment
Please, Sign In to add comment