Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ Baza danych obiektowo

Ostatnio zmodyfikowano 2017-12-17 17:54
Autor Wiadomość
atub
Temat założony przez niniejszego użytkownika
» 2017-12-17 16:19:42
W przypadku tablicy obiektów można to zrobić w ten sam sposób ?
P-167951
jankowalski25
» 2017-12-17 17:15:53
Algorytm jest ten sam dla tablicy obiektów dowolnego typu. W sumie to są trzy oddzielne przypadki:
1. Jeśli wykonasz tylko pierwszy krok, to otrzymasz tablicę podziurawioną jak ser szwajcarski i musisz pamiętać, które elementy są usunięte, a które nie.
2. Po zastosowaniu pierwszych dwóch kroków musisz zapamiętywać pojemność tablicy oraz liczbę elementów, aby nie korzystać z tych, które są usunięte.
3. Wykonanie wszystkich trzech kroków oznacza, że zawsze kopiujesz wszystkie elementy do nowej tablicy (wtedy wystarczy kopiować tylko to, co nie jest usuwane).
P-167954
mateczek
» 2017-12-17 17:54:14
ja bym to zrobił coś w ten deseń
C/C++
#include<string>
#include<list>
#include<iostream>
using namespace std;
class Osoba {
    friend ostream & operator <<( ostream & ss, Osoba & os );
    string imie;
    string nazwisko;
    int wiek;
public:
    Osoba( string im, string naz, int _wiek )
        : imie( im )
         , nazwisko( naz )
         , wiek( _wiek )
    { }
    void setData( string im, string naz, int _wiek ) {
        imie = im;
        nazwisko = naz;
        wiek = _wiek;
    }
    bool operator ==( const Osoba & os ) {
        //taki operator pozwala porównywać osoboy
        return( imie == os.imie ) &&( nazwisko == os.nazwisko ) &&( wiek == os.wiek );
    }
};
ostream & operator <<( ostream & ss, Osoba & os ) {
    // ten operator pozwala wypisywać osoby w sposób
    //cout<<osoba;
    //plik<<osoba;
    return ss << os.imie << " " << os.nazwisko << " " << os.wiek;
}

class listaOsob
    : public std::list < Osoba >
{ //dziedziczenie po klasie lista trochę upraszcza sprawę
public:
    void dodaj_osobe( Osoba & os ) {
        push_back( os );
    }
    void wyswietl_osoby() {
        for( list < Osoba >::iterator it = begin(); it != end(); it++ ) {
            cout <<( * it ) << endl; //operator potrafiący wypisać osoby
        }
    }
    void usunOsobe( Osoba & os ) {
        for( list < Osoba >::iterator it = begin(); it != end(); it++ ) {
            if(( * it ) == os ) { //operator potrafiący porównać osoby
                remove( * it ); //usuwanie osoby z listy
                break;
            }
        }
    }
};
int main() {
    listaOsob lista;
    Osoba temp( "marek", "marecki", 12 );
    lista.dodaj_osobe( temp );
    temp.setData( "piotrek", "piotrowski", 14 );
    lista.dodaj_osobe( temp );
    temp.setData( "adam", "adamski", 22 );
    lista.dodaj_osobe( temp );
   
   
    lista.wyswietl_osoby();
    cout << endl;
   
    temp.setData( "piotrek", "piotrowski", 14 );
    lista.usunOsobe( temp );
   
   
    lista.wyswietl_osoby();
}
P-167958
1 « 2 »
Poprzednia strona Strona 2 z 2