[C++] Dynamiczne alokowania pamieci dla struktur z wykożystaniem wskaźników
Ostatnio zmodyfikowano 2014-10-14 19:53
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. #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; 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 ) { 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? |
|
stryku |
» 2014-10-12 01:30:49 możesz zrobić coś takiego void create_n_place( Osoba *& wskOsoba, Infon *& wskInfon, int ile ) { wskOsoba = new Osoba[ ile ]; wskInfon = new Infon[ ile ]; } |
|
b0r0 Temat założony przez niniejszego użytkownika |
» 2014-10-14 19:53:33 Dzięki stryku pomogło! |
|
« 1 » |