[C++] Powstawanie obiektów w pętli

zuzka_kotek
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 23 lut 2016, o 20:45
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 4 razy

[C++] Powstawanie obiektów w pętli

Post autor: zuzka_kotek »

Dzień Dobry
Mam takie pytanie, ponieważ utworzyłam program z klasami, który będzie tzw. bazą książek. W moim programie w zależności od ilości książek którą wpisał użytkownik , użytkownik wpisuje dane książki, a następnie program wydrukuje je dla wybranego nr. Tylko na chwilę obecną w programie nie ma konstruktora i destruktora. I tu moje pytanie czy istnieje sposób, który pozwoli, by obiekty książki powstawały w pętli w zależności od ilości książek do wpisania. Wszędzie gdzie szukałam jedyny sposób dla powstawania obiektu to mniej więcej taki:

Kod: Zaznacz cały

class Osoba {
public:
    string imie;
    int wiek;
 
    Osoba(string imie, int wiek) {
        this->imie = imie;
        this->wiek = wiek;
        cout << "konstruktor wieloargumentowy
";
    }
 
    void toString() {
        cout << imie << "
" << wiek << "
";
    }
};
 
int main()
{
    Osoba *Arek = new Osoba();  // bląd kompilacji - brak parametrów!
 
    Osoba *Karol = new Osoba("Karol", 22);  // dobrze
    Karol->toString();
 
    system("pause");
 
    return 0;
}
Ten przykład wzięłam ze strony p-programowanie.pl
Gouranga
Użytkownik
Użytkownik
Posty: 1587
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 245 razy

[C++] Powstawanie obiektów w pętli

Post autor: Gouranga »

no i teraz jak użytkownik ma podać n książek, to tworzysz tablicę Ksiazka *baza[n];
i w pętli po i od 0 do n-1 prosisz o podanie tytułu, autora i np. numeru i tworzysz baza[i] = new Ksiazka(...);
zuzka_kotek
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 23 lut 2016, o 20:45
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 4 razy

[C++] Powstawanie obiektów w pętli

Post autor: zuzka_kotek »

źle to chyba opisałam chodzi mi o to że we wszystkich przykładach które widziałam w mainie już wcześniej programista wpisuje np. numer samolot(1200,"Biezaca wyskosc"), a ja bym chciała by dopiero po włączeniu programu użytkownik wpisywał dane książki w zależności ile by chciał książek.

Kod: Zaznacz cały

#include <iostream>
using namespace std;

class Ksiazka
{
    char imie_autora[15];
    char nazwisko_autora[50];
    char tytul[30];
    int rok_wydania;
    int nr_wydania;
public:

    void wpisz()
    {
        cout<<endl;
        cout<<endl;
        cout << "---WPISYWANIE DANYCH KSIAZKI---"<< endl;
        cout<<endl<<endl<<" Podaj dane ksiazki "<<endl;
        cout<<"_______________________________________"<< endl<<endl;
        cout<<endl<< " Imie autora: ";
        cin >> imie_autora;
        cout<<endl;
        cout<< " Nazwisko autora: ";
        cin >> nazwisko_autora;
        cout<<endl;
        cout<<"Tytul ksiazki: ";
        cin>> tytul;
        cout<<endl;
        cout << " Rok wydania: ";
        cin >> rok_wydania;
        cout << " Nr wydania: ";
        cin >> nr_wydania;
    }

    void drukuj()
    {
        cout<<endl;
        cout << "---DRUKOWANIE DANYCH KSIAZKI---"<< endl;
        cout << "__________________________________________________________________________ " << endl;
        cout<<endl <<endl;
        cout << " Imie autora: " << imie_autora << endl;
        cout << " Nazwisko autora: " <<nazwisko_autora<< endl;
        cout << " Tytul ksiaki: " << tytul << endl;
        cout << " Rok wydania: " << rok_wydania << endl;
        cout << " Nr wydania: " << nr_wydania << endl;
        cout<<endl<<endl;
    }
};

int main()
{
    unsigned int a;
    unsigned int b = 0;

    cout<<"                                  ---WITAJ!---                                       "<<endl;
    cout << "                   Ilu ksiazek chcesz wpisac ? "<<endl;
    cin >> a;
    Ksiazka * ksiegozbior = new Ksiazka[a];
    for(int i = 0; i < a; ++i)
    {
        cout<<"Ksiazka numer "<<i+1;
        ksiegozbior[i].wpisz();
    }
    cout<<endl;
    cout<<"Dane ktorej ksiazki chcesz wydrukowac? ";
    cin>>b;
    cout<<endl;
    ksiegozbior[b-1].drukuj();

    delete[] ksiegozbior;
}
Gouranga
Użytkownik
Użytkownik
Posty: 1587
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 245 razy

[C++] Powstawanie obiektów w pętli

Post autor: Gouranga »

no to wczytaj od użytkownika liczbę n

Kod: Zaznacz cały

cin >> n;
a potem zadeklaruj

Kod: Zaznacz cały

Ksiazka baza[n];
ODPOWIEDZ