Dynamiczna tablica strukur-> dostep do struktur
Ostatnio zmodyfikowano 2014-05-02 22:30
winio94 Temat założony przez niniejszego użytkownika |
Dynamiczna tablica strukur-> dostep do struktur » 2014-05-02 21:35:35 Cześć: mam taki kodzik: #include<iostream> #include<array> #include<conio.h> #include<cstdlib>
using namespace std; struct car { char tab_marka[ 30 ]; int rok; };
int main() { cout << "Podaj liczbe samochodow, ktore chcesz skatalogowac: " << endl; int ilosc; cin >> ilosc; car * wskaznik = new car[ ilosc ]; for( int i = 1; i <= ilosc; i++ ) { cout << "Samochod #" << i << endl; cout << "Prosze podac marke: "; cin.get(); cin.get( wskaznik->tab_marka, 30 ); cout << "Rok produkcji: "; cin >> wskaznik->rok; cout << wskaznik->rok << "\t" << wskaznik->tab_marka << endl; } getch(); return 0; } Jak widac mialem za zadanie stworzyc dynamiczna tablice struktur. Na koncu mam wyswietlic zawartosci wszystkich struktur. Np tworze tablice dwoch struktur car,ale nie wiem jak za pomocą wskaznika dostac sie do poszczegolnych struktur. Czy mozna wypisac na raz zawartosci wszystkich struktur z tablicy? |
|
Monika90 |
» 2014-05-02 21:39:30 Taki wskaźnik możesz używać tak jakbyś używał tablicy cout << wskaznik[ i ].rok; cin >> wskaznik[ i ].marka;
tylko indeksy zaczynają się od zera |
|
winio94 Temat założony przez niniejszego użytkownika |
» 2014-05-02 21:50:37 1. Marka moze skladac sie z kilku slow wiec samo cin odpada. 2. Chcialbym wiedziec czy da sie wypisac na raz wszystkie struktury z tablicy struktur a raczej to co sie w tych strukturach znajduje. 3. Indeksy mam od 1 zeby mi samochody dorbze wypisywalo(mochod 1, samochod 2 itd), czy moga wystapic przez to bledy? 4. zmmienilem kod na: car * wskaznik = new car[ ilosc ];
for( int i = 1; i <= ilosc; i++ ) { cout << "Samochod #" << i << endl; cout << "Prosze podac marke: "; cin.get(); cin.get( wskaznik->tab_marka, 30 ); cout << "Rok produkcji: "; cin >> wskaznik->rok; cout << wskaznik[ i ].rok << "\t" << wskaznik[ i ].tab_marka << endl; } , ale wyswietla mi glupoty; Podaj liczbe samochodow, ktore chcesz skatalogowac: 2 Samochod #1 Prosze podac marke: mama Rok produkcji: 1964 1886153825 ents Samochod #2 Prosze podac marke: tata Rok produkcji: 1992 2 1I6;Á) Pozdrawiam |
|
Monika90 |
» 2014-05-02 21:58:19 Prawidłowe indeksy tablic zaczynją się od zera a kończą na ilosc-1 (włącznie). wskaznik->rok to to samo co wskaznik[0].rok, czyli wczytujesz wszystkie dane do elementu o indeksie 0, a wyświetlasz te o indeksach 1,2,3... |
|
winio94 Temat założony przez niniejszego użytkownika |
» 2014-05-02 22:08:45 Dzięki, zrobiłem coś takiego i wygląda dosyc dobrze. #include<iostream> #include<array> #include<conio.h> #include<cstdlib>
using namespace std; struct car { char tab_marka[ 30 ]; int rok; };
int main() { cout << "Podaj liczbe samochodow, ktore chcesz skatalogowac: " << endl; int ilosc; cin >> ilosc; car * wskaznik = new car[ ilosc ]; for( int i = 0; i <= ilosc - 1; i++ ) { cout << "Samochod #" << i << endl; cout << "Prosze podac marke: "; cin.get(); cin.get( wskaznik[ i ].tab_marka, 30 ); cout << "Rok produkcji: "; cin >> wskaznik[ i ].rok; } for( int j = 0; j < ilosc; j++ ) { cout << wskaznik[ j ].rok << "\t" << wskaznik[ j ].tab_marka << endl; } getch(); return 0; } Pytania mam dwa: 1.Jest metoda "tablicowa"dostepu do pol struktury i "wskaznikowa". Pytanie moje jest takie. czy da się za pomocą metody wskaźnikowej(->)dostac do poszczególnych pół danej struktury z tablicy struktur.(Czy istnieje coś rónoważne do "wskaznik[j].rok") 2. Czy potrzebne są ewentualne korekty kodu? Widoczne jakies rażące rzeczy? |
|
Monika90 |
» 2014-05-02 22:16:20 1 ptr[index].member to to samo co (ptr + index)->member
2 Dla mnie new[] jest rażące, zwłaszcza jak brakuje delete[], mozesz użyć std::vector<car> |
|
winio94 Temat założony przez niniejszego użytkownika |
» 2014-05-02 22:30:22 Wielkie dzięki |
|
« 1 » |