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

Dynamiczna tablica strukur-> dostep do struktur

Ostatnio zmodyfikowano 2014-05-02 22:30
Autor Wiadomość
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:
C/C++
#include<iostream>
#include<array>
#include<conio.h>
#include<cstdlib>

using namespace std;
struct car //deklaracja struktury
{
    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; //jak to zmienic aby wyswitlalo wszystko na koncu??
    }
    // for(int j=0;j<ilosc;j++)
    // {
    //
    // }
   
    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?
P-109131
Monika90
» 2014-05-02 21:39:30
Taki wskaźnik możesz używać tak jakbyś używał tablicy
C/C++
cout << wskaznik[ i ].rok;
cin >> wskaznik[ i ].marka;

tylko indeksy zaczynają się od zera
P-109132
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:
C/C++
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
P-109134
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...
P-109135
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.
C/C++
#include<iostream>
#include<array>
#include<conio.h>
#include<cstdlib>

using namespace std;
struct car //deklaracja struktury
{
    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?
P-109136
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>
P-109139
winio94
Temat założony przez niniejszego użytkownika
» 2014-05-02 22:30:22
Wielkie dzięki
P-109141
« 1 »
  Strona 1 z 1