Jak zdefiniowac tablice ?

0

c++ (dev)
Witam,
mam pytanko: Jak zdefiniowac tablicę, której elementami są tablice struktur ??? O ile mozna oczywiście

Tablice struktur mam zdefiniowane nastepujaco:

typedef struct punkt
{
double x, y;
};

punkt tab[413454];

0

punkt tab[pierwszy_wymiar][drugi_wymiar];

1
typedef struct
{
    double x, y;
} PUNKT;

PUNKT tab[413454];
PUNKT *TablicaTablic[3];
for(unsigned i=0;i<3;++i) TablicaTablic[i]=(PUNKT*)malloc((10+5*i)*sizeof(PUNKT));
TablicaTablic[0] // 10 - elementowa tablica punktów
TablicaTablic[1] // 15 - elementowa tablica punktów
TablicaTablic[2] // 20 - elementowa tablica punktów

Inne warianty:

PUNKT Tab[5][10]; // pięć tablic o rozmiarze 10

lub:typedef PUNKT PUNKTTAB[15];
PUNKTTAB Tb[7]; // siedem tablic o rozmiarze 15

Niestety te ostatnie dwa warianty raczej są nie tablicami tablic tylko tablicami dwuwymiarowymi czyli w każdym wierszu tyle samo kolumn.
W pierwszym wariancie w każdym wierszu może być różna ilość kolumn.
No i oczywiście należy wspomnieć o:
```cpp
vector<vector<PUNKT> > Tab(8,vector<PUNKT>(4)); // Tablica tablic 8 tablic każda rozmiarem 4 ale każdy wiersz można osobno rozszerzyć bądź skrócić.

lub:

struct punkt
{
    double x, y;
};
punkt tab[413454]; // dla c++ w c koniecznie: struct punkt tab[413454];
0

mam linie składające się różnych ilości punktów o wspolrzednych x i y,
przykałdowa linia wyglada tak:

Data0=(49.53458,20.64231),(49.53453,20.64200),(49.53482,20.64113),(49.53493,20.64041)

Przeszukuje ją i zapisuje punkty do tablicy struktur:

#define NMAX 1000000
...
typedef struct
{
double x, y;
} punkt;

PUNKT tab[413454];
PUNKT TablicaTablic[NMAX];
...
//przeszukanie lini
****
int k=0;
for (int i = 0, pos = 7; i < linia.length(); i++)
{
tab[k].x=atof((linia.substr(pos, i - pos-9)).c_str());
tab[k].y=atof((linia.substr(i-8, 8)).c_str());
pos = i + 3;
k++;
}

Jak przypisac tablice struktur ( zestaw punktow) do n-tego elementu tablicy tablic ??? gdzie 'n' to numer lini

0

Jak zauważyłem z innego postu w którym wyszukiwałeś wiersze zaczynające się z "Data0=" w pliku - nie masz sposobu na zliczenie ilości takich grup ani na zliczenie ilości punktów w grupie.
więc zastanów się nad użyciem jednego z:
list<list<punkt> >LisaList;
vector<list<punkt> >TablicaList;

while(plik)
  {
   LisaList.push_back(list<punkt>());
   while(wiersz)
     {
      punkt p;
      p.x=...; p.y=...;
      LisaList.back().push_back(punkt);
     }
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1