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

usuwanie sie pierwszego obiektu z kontenera

Ostatnio zmodyfikowano 2017-04-15 21:47
Autor Wiadomość
mikewazowski
Temat założony przez niniejszego użytkownika
usuwanie sie pierwszego obiektu z kontenera
» 2017-04-15 20:50:44
poproszę o wskazówkę co robię nie tak - kiedy case 1 jest wywoływany więcej niż jeden raz to przy wyświetlaniu listy wszystkich osób w miejscu pierwszej dodanej osoby pokazują się losowe dane



C/C++
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;

class Osoba
{
public:
    static int liczba;
private:
   
    string imie;
    int rok;
    int indeks;
   
   
public:
    Osoba() { }
    ~Osoba();
   
    void WpiszDane( int a, string b )
    {
        cout << "podaj rok urodzenia: ";
        cin >> a;
        rok = a;
        cout << "podaj imie: ";
        cin >> b;
        imie = b;
        indeks = liczba;
        liczba++;
    }
   
    void Wypisz()
    {
        cout << "indeks: " << indeks << endl;
        cout << "imie: " << imie << endl;
        cout << "rok ur: " << rok << endl;
        cout << "wiek: " << 2017 - rok << endl;
        cout << endl;
    }
   
   
   
};
typedef std::vector < Osoba *> tablica;
tablica tlum;
int Osoba::liczba = 0;

int main()
{
   
   
    int n, rok, menu, ile;
    string imie;
   
    do
    {
       
        cout << "====== MENU =====" << endl;
        cout << "1 --> dodaj osoby" << endl;
        cout << "2 --> wyswietl wszystkie osoby" << endl;
        cin >> menu;
        cout << "================" << endl;
        cout << endl;
       
        switch( menu )
        {
           
        case 1:
            cout << "ile osob chcesz dodac: ";
            cin >> n;
            cout << endl;
           
            for( int i = 0; i < n; i++ )
            {
                tlum.push_back( new Osoba );
                tlum[ i ]->WpiszDane( rok, imie );
            }
            system( "cls" );
            break;
        case 2:
           
            for( int i = 0; i < tlum.size(); i++ )
            {
                tlum[ i ]->Wypisz();
            }
            break;
           
            default:
            cout << endl;
            break;
        }
    } while( menu != 3 );
   
   
   
   
   
    return 0;
}
P-160165
Monika90
» 2017-04-15 21:41:32
C/C++
tlum[ i ]->WpiszDane( rok, imie );
Tutaj wywołujesz WpiszDane nie dla tej osoby dla której chcesz. Żeby wywołać dla ostatnio dodanej osoby napisz:
C/C++
tlum.back()->WpiszDane( rok, imie );
P-160168
mikewazowski
Temat założony przez niniejszego użytkownika
» 2017-04-15 21:47:49
działa, dziękuje za pomoc, zamykam
P-160170
« 1 »
  Strona 1 z 1