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

[C++] Dynamiczne alokowania pamieci dla struktur z wykożystaniem wskaźników

Ostatnio zmodyfikowano 2014-10-14 19:53
Autor Wiadomość
b0r0
Temat założony przez niniejszego użytkownika
[C++] Dynamiczne alokowania pamieci dla struktur z wykożystaniem wskaźników
» 2014-10-12 01:16:37
Witam.
Zmagam się z dynamicznym alokowaniem pamięci dla struktur. gdy robię to w main() to jest banał ale próbuje przenieść to do funkcji i coś mi nie idzie.
C/C++
#include <iostream>
#include <cstdio>
#include <windows.h>


using namespace std;


struct Osoba
{
    char name[ 10 ];
    char surname[ 10 ];
    int bday;
    int bmonth;
    int byear;
    int height;
    int weight;
    int age;
    char gender;
};

struct Infon
{
    char adres[ 30 ];
    long long PESEL;
    char zawod[ 30 ];
    int dochod;
    char drivlic[ 5 ];
};

void create_n_place( Osoba * wskOsoba, Infon * wskInfon, int ile );
void wypelnij( Osoba * wska1, int ile );
void wypisz( Osoba * wska2, int ile );


int main()
{
    int w;
    int il;
    Osoba * wskOsoba; //tworzenie wskaźników
    wskOsoba = NULL;
    Infon * wskInfon;
    wskInfon = NULL;
    Stats * wskStats;
    Infof * wskInfof;
   
    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 10 );
    cout << "Siema!" << endl;
    cout << "Powiedz w jakim trybie mam sie uruchomic?" << endl;
    cout << "Wpisz:" << endl;
    cout << "1 - Aby uruchomic tryb CASUAL" << endl;
    cout << "2 - Aby uruchomić tryb FANTASY" << endl;
    cin >> w;
    cout << endl;
   
    switch( w )
    {
    case 1:
        {
            cout << "Ilu ludzi chcesz wprowadzi?" << endl;
            cin >> il;
            create_n_place( wskOsoba, wskInfon, il );
            wypelnij( wskOsoba, il );
            wypisz( wskOsoba, il );
            break;
        }
       
    case 2:
        {
           
            break;
        }
        default:
        {
            cout << "Nie dokonano poprawnego wyboru. \nZamykam program" << endl;
        }
       
    }
   
}


void create_n_place( Osoba * wskOsoba, Infon * wskInfon, int ile ) //rezerwowanie miejsca
{
    wskOsoba = new Osoba[ ile ];
    wskInfon = new Infon[ ile ];
}

void wypelnij( Osoba * wska1, int ile )
{
    for( int i = 0; i < ile; i++ )
    {
        cout << "podaj imie" << endl;
        cin >>( wska1 + i )->name;
        cout << "podaj nazwisko" << endl;
        cin >>( wska1 + i )->surname;
        cout << "podaj dzien urodzenia" << endl;
        cin >>( wska1 + i )->bday;
        cout << "podaj miesiac urodzenia" << endl;
        cin >>( wska1 + i )->bmonth;
        cout << "podaj rok urodzenia" << endl;
        cin >>( wska1 + i )->byear;
        cout << "podaj wzrost" << endl;
        cin >>( wska1 + i )->height;
        cout << "podaj wage" << endl;
        cin >>( wska1 + i )->weight;
        cout << "podaj wiek" << endl;
        cin >>( wska1 + i )->age;
        cout << "podaj plec" << endl;
        cin >>( wska1 + i )->gender;
    }
}

void wypisz( Osoba * wska2, int ile )
{
    for( int i = 0; i < ile; i++ )
    {
        cout << "Imie: " <<( wska2 + i )->name << endl;
        cout << "Nazwisko: " <<( wska2 + i )->surname << endl;
        cout << "wzrost: " <<( wska2 + i )->height << endl;
        cout << "waga: " <<( wska2 + i )->weight << endl;
        cout << "wiek: " <<( wska2 + i )->age << endl;
    }
}

Testowałem wpisywanie na pojedynczym obiekcie i działa funkcja do wypełniania.
Problemy pojawiają się chyba przy samym tworzeniu zmiennych bo albo wyrzucało mi że nie może dostać sie do pamięci albo ze cały czas NULL
da rade to jeszcze jakoś naprawić czy przebudować to całkiem?
P-118309
stryku
» 2014-10-12 01:30:49
możesz zrobić coś takiego
C/C++
void create_n_place( Osoba *& wskOsoba, Infon *& wskInfon, int ile ) //rezerwowanie miejsca
{
    wskOsoba = new Osoba[ ile ];
    wskInfon = new Infon[ ile ];
}
P-118310
b0r0
Temat założony przez niniejszego użytkownika
» 2014-10-14 19:53:33
Dzięki stryku pomogło!
P-118470
« 1 »
  Strona 1 z 1