kopiowanie tablic c sharp

0

Jak najlepiej skopiowac zawartosc tablic, uzywajac np .clone czy moze .CopyTo

do dyspozycji sa dwie tablice
np
int[,] tablica1=new int[x,y];
int[,] tablica2=new int[x,y];

i do nowej tablicy przypisac ta wlasnie tablice

np. int[,] nowa_tablica=new int[x,y];

nowa_tablica.CopyTo( tablica1, 0 );
nowa_tablica.CopyTo( tablica2, (y/2) );
czy takie cos zadziala

czy moze lepiej uzyc .clone

0

na moje to się tak robi:

for(int i=0; i<x; i++)
   for(int j=0; j<y; j++)
       nowa_tablica[x,y] = stara_tablica[x,y] 

nie pamiętam dokładnie ale .Copy() chyba używałaś(eś) do pojedynczej komórki w celu przeniesienia jej do innej tablicy na wskazane miejsce. A .Clone() to nic innego jak powyższy przykład. ;-)

0
MagdaToJa napisał(a)

(...)
nowa_tablica.CopyTo( tablica1, 0 );
nowa_tablica.CopyTo( tablica2, (y/2) );
czy takie cos zadziala
(...)

To może tak odpal komilator i zobacz...

Kuken napisał(a)

na moje to się tak robi: (...)

Na moje to aż nietaktowne. Pętle jeżeli kopiujesz wybiórczo (z ifem lub czymś takim). Jak robi się klona to kopiuje się n-bajtów z punktu a do b.

0
Kuken napisał(a)

na moje to się tak robi:

for(int i=0; i<x; i++)
for(int j=0; j<y; j++)
nowa_tablica[x,y] = stara_tablica[x,y]


Nie dokladnie o takie cos mi chodzilo, bo tego juz probowalam.
to jest zwykle przypisanie a ja mam jedna tablice do ktorej mam przepisac dwie tablice o roznych wymiarach. wszystkie tablice sa dwuwymiarowe

np.
1 2 3 4 0 9 8 7 6
1 2 3 4 5 6 7 8 9
1 1 1 2 2 2 3 3 3

a maja powstac dwie tablice np
t1 t2
1 2 3 4 oraz 0 9 8 7 6
1 2 3 4 oraz 5 6 7 8 9
1 1 1 2 oraz 2 2 2 3 3

0
MagdaToJa napisał(a)

Nie dokladnie o takie cos mi chodzilo, bo tego juz probowalam.
to jest zwykle przypisanie a ja mam jedna tablice do ktorej mam przepisac dwie tablice o roznych wymiarach. wszystkie tablice sa dwuwymiarowe

popatrz sie na to co napisałaś i zobacz na przykład jaki podałaś i mi powiedz jedno. O co ci chodzi?? [???] Masz do jednej tablicy wrzucić dwie czy masz z 2 zrobić jedną?? Bo treść do przykładu jest przeciwna :-D

0
Kuken napisał(a)
MagdaToJa napisał(a)

popatrz sie na to co napisałaś i zobacz na przykład jaki podałaś i mi powiedz jedno. O co ci chodzi?? [???] Masz do jednej tablicy wrzucić dwie czy masz z 2 zrobić jedną?? Bo treść do przykładu jest przeciwna :-D

mam np tablice
int[,] tablica = new int[rozmiar + 1, 18];
i dalej losuje dwa punkty ktore dziela ja na 3 czesci np

int[,] lewa = new int[mniejsza,iloscWierszy];
int[,] srodkowa = new int[wieksza-mniejsza,iloscWierszy];
int[,] prawa = new int[iloscKolumn-wieksza,iloscWierszy];

i teraz mam polączyc tablice lewa srodkowa i prawa w jedna

0
MagdaToJa napisał(a)
Kuken napisał(a)
MagdaToJa napisał(a)

popatrz sie na to co napisałaś i zobacz na przykład jaki podałaś i mi powiedz jedno. O co ci chodzi?? [???] Masz do jednej tablicy wrzucić dwie czy masz z 2 zrobić jedną?? Bo treść do przykładu jest przeciwna :-D

mam np tablice

int[,] tablica = new int[rozmiar + 1, 18];

i dalej losuje dwa punkty ktore dziela ja na 3 czesci np

int[,] lewa = new int[mniejsza,iloscWierszy];
int[,] srodkowa = new int[wieksza-mniejsza,iloscWierszy];
int[,] prawa = new int[iloscKolumn-wieksza,iloscWierszy];

i teraz mam polączyc tablice lewa srodkowa i prawa w jedna

0

pisane tak na szybkości (niestety nie sprawdziłem tego bo nie mam kompilatora pod ręką)ale myślę, że powinno być dobrze przy założeniu, że a+b+c = n ;]

            
            int[,] tabela = new int[n, m];
            int[,] lewa = new int[a, m];
            int[,] srodek = new int[b, m];
            int[,] prawa = new int[c, m];
            int zm_pom1 = 0;
            int zm_pom2 = 0;

            for (int i=0; i < n; i++)
            {

                for (int j=0; j < m; j++)
                {
                    if (i < a)
                    {
                        tabela[i, j] = lewa[i, j];
                    }
                    if ((i >= 3) && (i < a+b))
                    {
                        tabela[i, j] = srodek[zm_pom1, j];
                    }
                    else
                    {
                        tabela[i,j] = prawa[zm_pom2,j];
                    }
                }
                if ((i >= a) && (i < a+b))
                {
                    zm_pom1++;
                }
                if (i >= a+b)
                {
                    zm_pom2++;
                }
            } 

nie wiem po co ci to ale to trochę głupie rozbijać tabelę a potem ją łączyć :-D

0
Kuken napisał(a)

nie wiem po co ci to ale to trochę głupie rozbijać tabelę a potem ją łączyć :-D

Wiem że to głupie ale to potrzebne do zadania na zajecia a wlasciwie do niewielkiej jego częsci.
<ort>na pewno </ort>sie przyda i dziekuje:)

0

Dzieki, niektóre elementy mi sie przydały

Pozdrawiam wszystkich

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