logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Książka do nauki tablic dwuwymiarowych i wskaźników w C++

karol123 08 Sie 2007 19:12 3273 12
REKLAMA
  • #1 4158882
    karol123
    Poziom 16  
    Posty: 228
    Pomógł: 2
    Ocena: 10
    Witam wszystkich na foeum mam problem z tabicami czy ktoś tu z obecnych członków mógłby mi doradzić jaki najlepszy podrecznik zastosować Mam mianowicie do napisania program wypisujący tablicy dwuwymiarowej 20na 20 przykładowo TAB[20][20] trójkąt Pascala po przekątnej same jedynki niewiem jak z formułowac ciało funkcji Ale nie oto mi tak chodzi jak jakąś ksiązke opisującom działania na tabicach i wskażnikach Pozdrawiam dzienkuje za odpowiedzi.
  • REKLAMA
  • #2 4159266
    lord_dagoth
    Poziom 25  
    Posty: 860
    Pomógł: 68
    Ocena: 6
    eeee... książka nie będzie Ci potrzebna do tego...

    Proponuje www.google.pl i wpisz tam "C++ tablice" ;)
  • #3 4159374
    karol123
    Poziom 16  
    Posty: 228
    Pomógł: 2
    Ocena: 10
    No własnie już to przerabiałem są co prawda podane różne warianty ale nic z tego .Jest to cienżki temat .
  • REKLAMA
  • #4 4159497
    Dawid.wielun
    Poziom 20  
    Posty: 464
    Pomógł: 10
    Ocena: 13
    #include <iostream>
    #include <stdlib.h>
     
    //----------------------------------------------------------------
    using namespace std;
    // Deklaracja zmiennych
    int rzedow;
    int wiersz[ 34];
     
    int main(int argc, char* argv[])
    {
            cout << "Ile rzedow ?" << endl;
            cin >> rzedow;
            cout << endl;
     
            // jeśli typ int jest 32-bitowy, to wierszy
            // o numerach większych od 33 już nie policzymy:
            // max: (33 po 16) = 1166803110 = 0x458C00A6
     
            if( rzedow > 34)
                rzedow = 34;
     
            for (int i = 0; i < rzedow ; ++i)
            {
                    int j;
     
                    wiersz[i] = 1;
                    for (j = i-1; j > 0; --j)
                            wiersz[j] += wiersz[j-1];
     
                    for (j = 0; j <= i; j++)
                    {
                            cout << wiersz[j] << " ";
                    }
     
                    cout << endl;
            }
     
            return 0;
    }
    

    Źródło: http://pl.wikipedia.org/wiki/Tr%C3%B3jk%C4%85t_Pascala
    xD
  • REKLAMA
  • #5 4159578
    lord_dagoth
    Poziom 25  
    Posty: 860
    Pomógł: 68
    Ocena: 6
    no dobra... ale właściwie czego Ty nie rozumiesz?

    Bo z tego co piszesz... to wnioskuje, że nie masz bladego pojęcia o programowaniu...
  • #6 4162320
    karol123
    Poziom 16  
    Posty: 228
    Pomógł: 2
    Ocena: 10
    Panie Lordzie czy bladego to niepowiedzaiłbym Niech pan coś napisze a nie same drwiny.
  • #7 4162749
    Terminator
    Poziom 23  
    Posty: 392
    Pomógł: 65
    Ocena: 12
    Jaki podręcznik ?? Symfonia C++ pana Grębosza
    Tablice 2 wymiarowe ?? tab[20][20] ... ale bardziej zaawansowane na wskaźnikach
    ...
    int ile;
    cin >> ile;
    int *tab[ile*ile];
    ...
    //odwołanie się do tej "niby" tablicy 2 wymiarowej
    tab[nr_rzędu * ile + która_komórka_w_rzedzie]
    ...

    chyba jasne i proste
  • REKLAMA
  • #8 4162949
    lord_dagoth
    Poziom 25  
    Posty: 860
    Pomógł: 68
    Ocena: 6
    Nie no, jakie drwiny?

    Skoro nie możesz zrozumieć wskaźników ani tablic, to chyba jednak nie za dobrze potrafisz programować (zważając na to, że są to jedne z pierwszych rozdziałów każdej książki poświęconej C++ czy C).

    Wystarczy najprostszy tutorial C++ przeczytać, żeby zrozumieć to zagadnienie.

    Polecam tutorial "Od zera do gier Kodera" z www.gamedev.pl

    Tam masz przejrzyście wyłożone podstawy C++, na przykładzie gier komputerowych, więc chyba nie będzie trudne do zrozumienia. Sam od tego zaczynałem.

    Książki wcale nie są potrzebne, jak nie chcesz poznawać całego języka, i potem do niego ciągle wracać. No chyba że chcesz władować 99zł w wielkie tomisko, które potem będzie zarastało kurzem na półce ;)

    W taki wypadku z wydawnictwa Helion polecam książke Praty, "Szkoła Programowania Język C++".

    No, to chyba tyle ;)
  • #9 4163718
    sawitar
    Poziom 18  
    Posty: 226
    Pomógł: 20
    Ocena: 19
    Z ksiązek to polecam ANSI C. Przydaje się zawsze, niezależnie od stopnia znajomości języka ;-)
  • #10 4185837
    Fyszo
    Poziom 37  
    Posty: 3987
    Pomógł: 223
    Ocena: 115
    A z matematyką jak stoisz? Nawet jak złożysz dwa trójkąty to te jedynki chyba po krawedziach wypadną a nie po przekątnych?
  • #11 4197906
    karol123
    Poziom 16  
    Posty: 228
    Pomógł: 2
    Ocena: 10
    Chyba się nie rozumiemy troszkę program ma wypełnić tablice dwuwymiarową n-elementów jedynkami a resztę zerami Jeszcze do tego ma to być zrobione poprzez funkcje np trójkąt void (trójkąt)
    najpierw trzeba wyzerować całą tablice dwuwymiarową Mam dziwnego wykładowcę bo programy na zaliczenie pisze na kartce i głownie chodzi tu o zdefiniowanie ciała funkcji Ale wracając do tematu
    for(i=0;i<n;i++)
    {
    a[i][0]=1;a[i][j]=1]
    a[i][j]=
    a[i-1][j-1]+
    a[i-1][j]
    for(i=2;i<n;i++)
    for(j=1;j<n-1;j++)
    niewiem czy to w ten mniej wiencej sposób Pozdrawaim i dzienkuje.
  • #12 4199130
    marek_Łódź
    Poziom 36  
    Posty: 3103
    Pomógł: 208
    Ocena: 66
    Faktycznie ciężko się porozumieć. Może tak?


    http://pl.wikipedia.org/wiki/Trójkąt_Pascala napisał:

    function pascal(n,k:integer):integer;
    begin
      if (k=0) or (k =n) then
         pascal := 1
      else
         pascal := pascal(n-1, k-1) + pascal(n-1,k);
    end;


    dalej normalnie

    
    ...
    maxrow=20;   // ;-) 
    maxcol=maxrow;
    ....
    for (i=0;i<maxrow;i++)
      for (j=0;j<=i;j++)
         a[i][j]=pascal(i,j);


    jak się uprzesz, możesz dodatkowo wyzerować pozostałą część tablicy, która i tak z założenia jest zerowa.

    for (i=0;i<maxrow;i++)
      for (j=0;j<maxcol;j++)   
         if (j<=i)
            a[i][j]=pascal(i,j);
         else
            a[i][j]=0;
    


    Funkcja pascal jest rekurencyjna, jeśli TO przerabialiście. Ciekawe, czy przepisanie funkcji z wikipedii jest warunkiem wystarczającym zaliczenia (Twój wkład może polegać np. na zmianie nazwy funkcji. Pozdrowienia dla prowadzącego zajęcia ;-) )
  • #13 4201507
    karol123
    Poziom 16  
    Posty: 228
    Pomógł: 2
    Ocena: 10
    No niedokońca można przepisywać z wilkipedi ja nie mogę sobie wyobrazić tego z tym mam trudności zdefiniować umiem ale póżniej te waruneczki zagnieżdżenia funkcji mnie powalają Chyba nie każdy może być programistą Naszczeście na Automatyce nie jest to główną rolą Pozdrawiam.

Podsumowanie tematu

✨ Dyskusja dotyczy poszukiwania odpowiedniej książki do nauki operacji na tablicach dwuwymiarowych i wskaźnikach w języku C++. Autor ma za zadanie napisać program wypisujący tablicę 20x20 z trójkątem Pascala, gdzie po przekątnej mają być jedynki, jednak ma trudności z formułowaniem ciała funkcji oraz zrozumieniem wskaźników i tablic. Uczestnicy forum sugerują różne podejścia: korzystanie z tutoriali online, np. "Od zera do gier Kodera" z gamedev.pl, oraz polecają książki takie jak "Symfonia C++" Grębosza czy "Szkoła Programowania Język C++" Praty z wydawnictwa Helion. Podkreślono, że podstawy tablic i wskaźników są zwykle omawiane na początku nauki C++. Przykładowy kod pokazuje implementację trójkąta Pascala z wykorzystaniem tablic jednowymiarowych i funkcji rekurencyjnej. Autor ma również problem z definiowaniem funkcji i warunków zagnieżdżonych. Wskazano, że można najpierw wyzerować całą tablicę, a następnie wypełnić ją wartościami trójkąta Pascala, stosując pętle for i funkcję pascal(i,j). Dyskusja podkreśla znaczenie zrozumienia podstaw programowania, wskaźników i tablic, a także korzystania z dostępnych materiałów edukacyjnych i przykładów kodu.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA