Tablica dwuwymiarowa


(Mirex1) #1
string liczba;

int element;

int **tab1;  

while (getline(plik,liczba)){

          ++m;

  istringstream ss(liczba);

  while (ss>>element){

        ++i;



                tab1[m][i]=element;




        }

          i=0;

dlaczego program przestaje działać??


(Sawyer47) #2

Rezerwujesz pamięć na tablicę?


(Mirex1) #3

nie, a jak to się robi??


(Sawyer47) #4

Operatorem new. Tylko, że C++ nie ma dynamicznych tablic wielowymiarowych. Więc albo chce Ci się przeliczać adres albo możesz użyć np. std::vector i zrobić wektor wektorów.


(Mirex1) #5

tylko jak zrobić z wektorami żeby idea była ta samo w tym co napisałem, żeby rozróżniało wiersze i kolumny

-- Dodane 17.06.2011 (Pt) 20:49 --

vector > pobierz(string plik)

{char c;

        string s;

        int w=0,k=0;

        int m,l;

        ifstream czyt(plik.c_str());

        if(!czyt)

                cout<<"Nie moge otworzyc takiego pliku ";

    else

        {

                while(getline(czyt,s))

                {

                       ++w;

                       istringstream ss(s);

                       while (ss>>m){

                       ++k;}

                       k=l;

                       k=0;

                }}



        vector > temp(w,l);

        vector kw;

        czyt.clear();

        while(czyt>>m){

                       kw.push_back(m);}


                temp.push_back(kw);

        czyt.close();

        return temp;

-- Dodane 18.06.2011 (So) 9:27 --

gdzie jest bład??


(Sawyer47) #6

Nie mam pojęcia co ma robić ten kod. Mógłbyś dostarczyć jakiś normalnie sformatowany i skomentowany? Jak na razie mogę tylko powiedzieć, że kod układa się w ciekawy kształt, niemal ascii-art.


(Mirex1) #7

to jest fragment kodu, program ma pobierać macierze i wykonywać operacje. Największy problem z wczytaniem ich. Tego char c tam nie ma. Nie wiem czy dobrze wczytuje dane. Najpierw sprawdzam ilość wierszy, później kolumn. Następnie do wektora, a późńiej wektora wektorów


(Sawyer47) #8

To może inaczej, jaki jest format pliku, który jest wczytywany?


(Mirex1) #9

plik tekstowy, liczby ułożone w wierszach i kolumnach


([alex]) #10

Może coś w ten deseń:

typedef vector Wiersz;

typedef vector Tablica;


bool pobierz(const string &plik,Tablica &T)

  {

   ifstream czyt(plik.c_str());

   if(czyt)

     {

      string s;

      int R=-1;

      while(getline(czyt,s))

        {

         istringstream ss(s);

         Wiersz w;

         int v;

         while(ss>>v) w.push_back(v);

         int r=w.size();

         if(r)

           {

            if(R<0) R=r;

            else if(R!=r) return false;

            T.push_back(w);

           }

        }

      return true;

     }

   return false;

  }


int main()

  {

   Tablica T;

   if(pobierz("dane.txt",T))

     {

      for(int y=0;y
        {

         for(int x=0;x
           {

            cout<
           }

         cout<
        }

     }

   else cout<<"Błąd wczytywania pliku"<
   cin.get();

   return 0;

  }