Niekończąca się tablica
Ostatnio zmodyfikowano 2012-06-02 16:35
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. |
|
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: #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 ;) |
|
1 « 2 » |