Tablice w c++


(natan007) #1

Witam Mam tablice 20 elementową. Utworzyłem dwie tablice 10 elementowe. I chciałbym pół tablicy 20 elementowej skopiować do pierwszej tablicy 10 elementowej, drugie pół do drugiej. Pomóźcie jak to zrobić.


(Grzegorz Kwiatek) #2

To dwie linijki kodu. Może wypadałoby pomyśleć trochę i dołączyć jakiś kod, żeby chociaż było widać, że próbowałes. Nikt tu za ciebie (mam nadzieję) zadania domowego robił nie będzie.


([alex]) #3

Albo za pomocą pętli.

Albo za pomocą memcpy.


(natan007) #4

Tablica 20 elementowa to tab[20], tablice 10 elementowe to tab1[10]i tab2[10]. Jak wpisuje taki kod:

for (int i=0, i<10,i++)

tab1=tab

kompilator zwraca mi błąd, że tab jest za duża. I nie wiem co z tym zrobić.


(somekind) #5

Przypisuj elementy tablicy, nie tablice.


(Zulowski) #6
tab1[i] = tab[i]

([alex]) #7

Jeżeli tablice zadeklarowane w tym obszarze oraz mają ten sam typ oraz: rozmiar tab >= rozmiar tab1 + rozmiar tab2

memcpy(tab1,tab,sizeof(tab1));memcpy(tab2,(char*)tab+sizeof(tab1),sizeof(tab2)); // (char*)tab+sizeof(tab1) można zamienić na tab+sizeof(tab1)/sizeof(*tab1)   [/code]

(natan007) #8

for (int i=0;i<=9;i++)

tab1_=tab__;_

for (int i=0;i>9;i++)

tab2 =tab ;

Jak wpisuje taki kod to kopiuje mi się tylko pierwsza tablica i wyświetla się dobrze. A przy wyświetlaniu drugiej wyskakują błędy, jakaś duża liczba i nie wiem czy druga część kodu jest dobra.

Jak to zrozumieć? może macie jakieś sprawdzone sposoby, jakiś pseudkod czy coś w podobie?


([alex]) #9

Bo w drugiej pętli zaczynasz od 0 i natychmiast kończysz (zanim coś ta pętla zrobi) ponieważ (i>9) nie jest prawda jeżeli i=0.

for (int i=0;i<10;++i)