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

Tablica obiektów roślin - problem z kodem w C++

Object Storage Arubacloud
0 głosów
484 wizyt
pytanie zadane 14 czerwca 2018 w Rozwój zawodowy, nauka, praca przez fruczka Użytkownik (570 p.)

Cześć :)

Chciałbym się Was poradzić Moi Drodzy, w jaki sposób można wykonać tablicę obiektów różnych klas? Utworzyłem następujący kod:
 

#include <iostream>
#include <conio.h>

using namespace std;

class roslina
{
protected:
    string rodzaj;

private:
    string nowa;

public:
    string nazwa;
    string kontynent;
    int wiek;
    roslina_1();
    void wczytaj()
    {
        cout << "Dodawanie nowej rosliny!" << endl << endl;
        cout << "Podaj nazwe rosliny: ";
        cin >> nazwa;
        cout << "Podaj kontynent: ";
        cin >> kontynent;
        cout << "Ile dni zyje roslina: ";
        cin >> wiek;
        cout << "Jaki to jest rodzaj rosliny: ";
        cin >> rodzaj;
        cout << "Czy to nowa roslina: ";
        cin >> nowa;

        cout << endl;

    }

    void wypisz()
    {
        if(kontynent=="Europa") cout << "Jestem roslina zyjaca w Europie!" << endl << endl;
        else if (kontynent=="Azja") cout << "Jestem roslina zyjaca w Azji!" << endl << endl;
        else if (kontynent=="Ameryce") cout << "Jestem roslina zyjaca w Azji!" << endl << endl;
        else if (kontynent=="Australia") cout << "Jestem roslina zyjaca w Azji!" << endl << endl;
        else cout << "Gdzie ja zyje?! Skad ja jestem?!" << endl << endl;
    }
};

class roslina_miesozerna :public roslina
{
public:
        roslina_2();
        string jedzenie;
        string miesozernosc;
        int sen;

        void wczytaj()
        {
            cout << endl << "Mamy kilka dodatkowych pytan..." << endl;
            cout << "Ile ta roslina je: ";
            cin >> jedzenie;
            cout << "Czy to roslina miesozerna: ";
            cin >> miesozernosc;
            cout << "Ile ta roslina spi godzin: ";
            cin >> sen;
            cout << endl;
        }

        void wypisz()
        {
            if (sen<5 && sen>=0) cout << "Ta roslina prawie nie spi!" << endl;
            else cout << "Czy ta roslina w ogole zyje?" << endl;
        }
};

int main()
{
    roslina zwyczajna;
    zwyczajna.wczytaj();
    zwyczajna.wypisz();
    roslina_miesozerna jedzonko;
    jedzonko.wczytaj();
    jedzonko.wypisz();
    roslina_miesozerna *roslinka2 = new roslina_miesozerna;
    roslina *roslinka1 = static_cast <roslina*> (roslinka2);
    cout << endl << endl;
    cout << "Koniec!" << endl;
    getch();
    return 0;
}

Próbowałem również kombinować nieco pisząc:
 

nazwa tab[3];
kontynent tab[3];
wiek tab[3];
// i tak dalej...

Bardzo proszę o pomoc. Będę niesamowicie wdzięczny. :)


Pozdrawiam,
fruczka

2 odpowiedzi

0 głosów
odpowiedź 14 czerwca 2018 przez RafalS VIP (122,820 p.)
Zeob tsblice referencji lub wskaźnikow do wspólnej klasy bazowej wszystkich obiektow które chcesz w tej tablicy trzymać. Do takiej tablicy mozesz dodawac obiekty bez zadnego rzutowania.

Po wiecej informacji na ten temat : google polimorfizm C++
komentarz 14 czerwca 2018 przez fruczka Użytkownik (570 p.)
Hmm... poszperam troszkę :) Cóż... tak naprawdę jeszcze nie mieliśmy tego działu obiektówki - polimorfizm, a polecenia pewnie nie da się bez tego wykonać ;) Tak czy inaczej jak będę miał jeszcze jakieś pytanka to się tutaj odezwę :)
0 głosów
odpowiedź 14 czerwca 2018 przez Munvik Dyskutant (9,350 p.)
Polimorfizm to słowo klucz.
komentarz 14 czerwca 2018 przez fruczka Użytkownik (570 p.)

Utworzyłem coś następującego po zaznajomieniu się z polimorfizmem:
 

#include <iostream>
#include <string>
#include <conio.h>

using namespace std;

class roslina {
    string nazwa;
    int    wiek;
    public:
        roslina(const string& nazwa = "No Name", int wiek = 100)
        {
            this->nazwa = nazwa;
            this->wiek = wiek;
            cout << "konstrukcja " << this->nazwa << endl;
        }

           int getWiek() { return wiek; }

           string getNazwa() { return nazwa; }
       };

int main()
{
roslina ob("Storczyk");

roslina ktab[5] = { roslina("Slonecznik", 17),
roslina("Chwast"),
roslina("Paprotka", 26),
ob
};

    for (int i = 0; i < 5; i++)
    cout << ktab[i].getNazwa() << " lat "
    << ktab[i].getWiek()  << endl;
    getch();
    return 0;
}

Czy można to nazwać tablicą obiektów roślin o różnych klasach? Czy czegoś tutaj nadal brakuje? :)

Podobne pytania

0 głosów
1 odpowiedź 282 wizyt
pytanie zadane 9 listopada 2018 w C i C++ przez Daaa22 Dyskutant (8,250 p.)
0 głosów
2 odpowiedzi 1,279 wizyt
pytanie zadane 17 października 2018 w JavaScript przez smokolisz Mądrala (6,340 p.)
0 głosów
2 odpowiedzi 643 wizyt
pytanie zadane 11 maja 2016 w C i C++ przez sebask08 Użytkownik (510 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!

...