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

Niekończąca się tablica

Ostatnio zmodyfikowano 2012-06-02 16:35
Autor Wiadomość
Unlimited
Temat założony przez niniejszego użytkownika
» 2012-06-02 14:20:05
W sumie jak mogłem na to nie wpaść... Czyli suma sumarum. Robię sobie klasę w niej robię sobie zmienne. Potem tą klasę daję w vector <klasa> jakas_zmienna i operuję sobie ładnie na zmiennych. No i czy w takim sposobie mogę mieć w klasie zmienne int i string na raz? konstruktory/destruktory działają normalnie mam nadzieję w tym wypadku. Czyli podsumowując new i delete wymazać z mojej pamięci?

Edit:
Zamiast pytać wziąłem się do pracy i już znalazłem odpowiedzi na swoje pytania oprócz tego czy opłaca się wyrzucać całkowicie z mojej pamięci operatory new i delete.
P-57704
Unlimited
Temat założony przez niniejszego użytkownika
» 2012-06-02 16:35:57
Hmm. Zrobiłem mały programik aby zobaczyć jak to działa. Oto kod:
C/C++
#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;

class samochody
{
public:
    string marka;
    string model;
    string paliwo;
    int pojemnosc;
    int rok;
    samochody( string xmarka, string xmodel, string xpaliwo, int xpojemnosc, int xrok );
};

samochody::samochody( string xmarka, string xmodel, string xpaliwo, int xpojemnosc, int xrok )
    : marka( xmarka )
    , model( xmodel )
    , paliwo( xpaliwo )
    , pojemnosc( xpojemnosc )
    , rok( xrok )
{
}

int main()
{
    string Xmarka, Xmodel, Xpaliwo;
    int wybor, x, Xpojemnosc, Xrok;
    vector < samochody > samochod;
   
    do
    {
        system( "cls" );
        cout << "[1] Wyswietl samochody" << endl;
        cout << "[2] Dodaj nowy samochod" << endl;
        cout << "[3] Edytuj samochod" << endl;
        cout << "[4] Usun wpis samochodu" << endl;
        cout << "[0] Zakoncz" << endl << endl;
        cout << "Twoj wybor: ";
        cin >> wybor;
       
        switch( wybor )
        {
        case 1:
            {
                for( int i = 0; i < samochod.size(); i++ )
                {
                    cout << endl;
                    cout << i + 1 << ". Marka: " << samochod[ i ].marka << endl;
                    cout << "   Model: " << samochod[ i ].model << endl;
                    cout << "   Paliwo: " << samochod[ i ].paliwo << endl;
                    cout << "   Pojemnosc: " << samochod[ i ].pojemnosc << endl;
                    cout << "   Rok: " << samochod[ i ].rok << endl;
                }
                cout << endl;
                system( "pause" );
                break;
            }
        case 2:
            {
                cout << endl;
                cout << "Podaj marke: ";
                cin >> Xmarka;
                cout << "Podaj model: ";
                cin >> Xmodel;
                cout << "Podaj paliwo: ";
                cin >> Xpaliwo;
                cout << "Podaj pojemnosc: ";
                cin >> Xpojemnosc;
                cout << "Podaj rok: ";
                cin >> Xrok;
                samochod.push_back( samochody( Xmodel, Xmarka, Xpaliwo, Xpojemnosc, Xrok ) );
                cout << endl << "Dodano pomyslnie!" << endl << endl;
                system( "pause" );
                break;
            }
        case 3:
            {
                cout << endl;
                cout << "Podaj index pojazdu: ";
                cin >> x;
                cout << endl << "Aktualne zestawienie dla indeksu nr " << x << ":" << endl;
                cout << x << ". Marka: " << samochod[ x - 1 ].marka << endl;
                cout << "   Model: " << samochod[ x - 1 ].model << endl;
                cout << "   Paliwo: " << samochod[ x - 1 ].paliwo << endl;
                cout << "   Pojemnosc: " << samochod[ x - 1 ].pojemnosc << endl;
                cout << "   Rok: " << samochod[ x - 1 ].rok << endl;
                cout << endl << "Podaj nowe zestawienie: " << endl;
                cout << x << ". Marka: ";
                cin >> samochod[ x - 1 ].marka;
                cout << "   Model: ";
                cin >> samochod[ x - 1 ].model;
                cout << "   Paliwo: ";
                cin >> samochod[ x - 1 ].paliwo;
                cout << "   Pojemnosc: ";
                cin >> samochod[ x - 1 ].pojemnosc;
                cout << "   Rok: ";
                cin >> samochod[ x - 1 ].rok;
                cout << endl << "Zedytowano pomyslnie!" << endl << endl;
                system( "pause" );
                break;
            }
        case 4:
            {
                cout << endl;
                cout << "Podaj index pojazdu: ";
                cin >> x;
                samochod.erase( samochod.begin() + x - 1 );
                cout << endl << "Usunieto pomyslnie!" << endl << endl;
                system( "pause" );
                break;
            }
        case 0:
            {
                return 0;
            }
        }
    } while( wybor != 0 );
   
}

Wszystko pięknie ładnie tylko że jak np wprowadzę 4 samochody, potem usunę nr 2 to przy wyświetlaniu pokazuje wtedy że są 3 samochody (poprawnie) ale przy edycji mogę edytować 4 wpis którego przecież być już nie powinno, bo wszystkie wpisy za usuniętym elementem są przesuwane o 1 pozycje do przodu... Chyba zrozumiecie o co mi chodzi ;)
P-57709
1 « 2 »
Poprzednia strona Strona 2 z 2