Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Deklaracja kwadratowej tablicy 2-wymiarowej. C++

Michaell65 07 Lis 2010 14:37 2602 6
  • #1 07 Lis 2010 14:37
    Michaell65
    Poziom 8  

    Witam,

    mam problem z deklaracją kwadratowej tablicy dwuwymiarowej o wartościach logicznych, o rozmiarze "m" i jeszcze mam ją zainicjalizować.

    proszę o pomoc.

    chodzi o język C++

    0 6
  • #2 07 Lis 2010 15:55
    Sam Sung
    Poziom 30  

    Code:

    program bul;
    var
      Tablica : array[1..m, 1..m] of Boolean;
      i, j : Integer;
    begin
      for i := 1 to m do
        for j := 1 to m do
          Tablica[i, j] := True;
    end.

    0
  • #3 07 Lis 2010 17:34
    Terminator
    Poziom 23  

    Dla C/C++

    Code:
       //jesli m stałe
    
       const int m = 50;
       bool tablica[m][m];
       //inicjalizacja
       for(int i=0; i<m; i++)
          for(int j=0; j<m; j++)
             tablica[i][j] = false;

       
       //jesli rozmiar tablicy jest podawany przez użytkownika
       // jakaś funkcja wczytujaca jaka wartość ma m
       int m=50;
       bool *tablica = new bool[m*m];
       for(int j=0; j<m*m; j++)
          *(tablica+j) = false;

    0
  • #4 14 Lis 2010 17:24
    Michaell65
    Poziom 8  

    czy może być tak:

    deklaracja:

    Code:
    bool tab[m][m];
    
    bool **tab = new bool*[m];
    for(int i=0; i<=m; i++)
    tab[i] = new bool[m];



    Proszę pamiętać o używaniu znaczników code. - arnoldziq

    0
  • #5 14 Lis 2010 17:49
    Terminator
    Poziom 23  

    Może być ale z małymi poprawkami (np tablica 100x50)

    Code:
     int m=100, n=50;
    
    bool **tab = new bool *[m];
       for ( int i = 0; i < m; i++ )
          tab[i] = new bool [n];
       ta[64][32] = true;
       cout << tab[64][32] << endl; //true = 1


       //Po zakończeniu usuwamy ją z pamięci

       for ( int i=0; i < 100; i++ )
          delete [] tab[i];
       delete [] tab;

    niepotrzebna jest początkowa deklaracja bool tab[][]

    0
  • #6 14 Lis 2010 17:58
    Michaell65
    Poziom 8  

    ok, ale to ma być tablica kwadratowa więc chyba m i n muszą być takie same?

    możesz jeszcze mi napisać która część to zainicjalizowanie tablicy?

    0
  • #7 15 Lis 2010 07:23
    Terminator
    Poziom 23  

    Jeśli kwadratowa to owszem m i n takie same :)
    Nie ma inicjalizacji jako takiej.

    Code:
     for ( int i = 0; i < m; i++ )
    
          tab[i] = new bool [n];
    to można uznać za inicjalizacje , bo tworzymy obiekty, jednak na moim komplilatorze cała tablica ma wartość 'true'.
    Jeśli chcesz nadać jej wartość 'false' to robisz
    Code:
    int m=5, n=5;
    
    bool **tab = new bool *[m];
       for ( int i = 0; i < m; i++ )
       {
          tab[i] = new bool [n];
         for(int k=0; k<n; k++)
            tab[i][k] = false;
       }

    0