Avatar billede nae Nybegynder
18. september 2006 - 12:17 Der er 18 kommentarer og
2 løsninger

Behandling af arrays

Hej,
Jeg har et spørgsmål til jer eksperter.
Jeg har et 2D array (string[,] og vil gerne flytte det ud i 2 forskellige single arrays (string[]), men hvordan gøres det nemmest?
På forhånd tak
Avatar billede nae Nybegynder
18. september 2006 - 13:34 #1
Er der ingen der kan hjælpe?
Avatar billede mikkel_sommer Nybegynder
18. september 2006 - 13:54 #2
Hvilke værdier er der i dit 2D array?
Avatar billede mikkel_sommer Nybegynder
18. september 2006 - 14:03 #3
Ved ikke om jeg har forstået dig rigtig men måske det her kan hjælpe dig på vej:

string[,] ar2d = new string[2,5];
ar2d[0,0] = "00";
ar2d[0,1] = "01";
ar2d[0,2] = "02";
ar2d[0,3] = "03";
ar2d[0,4] = "04";
ar2d[1,0] = "10";
ar2d[1,1] = "11";
ar2d[1,2] = "12";
ar2d[1,3] = "13";
ar2d[1,4] = "14";
string[] a1 = new string[ar2d.Length/ar2d.Rank];
string[] a2 = new string[ar2d.Length/ar2d.Rank];

for(int a = 0; a < ar2d.Rank; a++)
{
    for(int b = 0; b < ar2d.Length/2; b++)
    {
        if(a == 0)
        {
            a1[b] = ar2d[a,b].ToString();
        }
        else
        {
            a2[b] = ar2d[a,b].ToString();
        }
    }
}
Avatar billede bulgroz Nybegynder
18. september 2006 - 14:29 #4
Hvis du alternativt anvender et array af arrays bliver implementering lidt nemmere:

// Array of Array eksempel (Jagged Array)
string[][] myArrayOfArrays = new string[][] { new string[] {"A1", "B1"},
                                                        new string[] {"A2", "B2"},
                                                        new string[] {"A3", "B3"}};

// Eksempel på iteration af samme
foreach (string[] row in myArrayOfArrays)
{
    Console.WriteLine("Row: " + myArrayOfArrays[0] + "  : " + myArrayOfArrays[1]);
    // Her skal du naturligvis tilføre værdierne til dine nye endiminsionale arrays i stedet for ovenstående.

}

...
Avatar billede nae Nybegynder
18. september 2006 - 14:37 #5
Bulgroz> jeg har desværre ikke brugt jagged arrays, så kan ikke helt bruge det :/
Mikkel> Det er lige præcis sådan noget jeg gerne ville have, den går dog out of bounce ved  a1[b] = ar2d[a,b].ToString();
Avatar billede mikkel_sommer Nybegynder
18. september 2006 - 15:12 #6
Har du ikke ændret noget i koden, for her kører den fint og a1 kommer til at indeholde de første 5 og a2 de sidste 5 værdier?
Avatar billede mikkel_sommer Nybegynder
18. september 2006 - 15:14 #7
Husk i den første løkke skal du bruge Rank og i den anden Length/2 ...
Avatar billede mikkel_sommer Nybegynder
18. september 2006 - 15:15 #8
Hvis den bliver ved med drille så prøv at sætte et breakpoint og følg værdierne af tællerne a og b.
Avatar billede nae Nybegynder
18. september 2006 - 15:16 #9
Ja jeg har ændret lidt:
    string[] output1 = new string[input.Length / input.Rank];
            string[] output2 = new string[input.Length / input.Rank];

            for (int a = 0; a < input.Rank; a++)
            {
                for (int b = 0; b < input.Length / 2; b++)
                {
                    if (a == 0)
                    {
                        output1[b] = input[a, b].ToString();
                    }
                    else
                    {
                        output2[b] = input[a, b].ToString();
                    }
                }
            }

Jeg skulle dog mene at det er det samme som dig :/
Tusind tak for din tid.
Avatar billede mikkel_sommer Nybegynder
18. september 2006 - 15:35 #10
Velbekommen :)
Avatar billede nae Nybegynder
21. september 2006 - 13:44 #11
Kunne du se fejlen, for kunne ikke se den i det overstående eksempel :/
Avatar billede nae Nybegynder
22. september 2006 - 12:06 #12
Er der ingen der kan finde fejlen?
Avatar billede mikkel_sommer Nybegynder
26. september 2006 - 10:30 #13
Prøv at kigge på værdierne i dit 2d array, er du sikker på at der er parvise værdier hele vejen igennem det?
Avatar billede nae Nybegynder
29. september 2006 - 08:25 #14
Undskyld jeg tror ikke helt jeg er med, hvad mener du med parvise værdier?
Avatar billede mikkel_sommer Nybegynder
29. september 2006 - 08:59 #15
Bare glem det hvis det ikke var tilfældet ville du have fået en null reference error.
Men prøv alligevel at breake koden og se om dit 2d array indeholder det forventede inden opsplitningen begynder og hvis det er tilfældet så prøv at add en watch på begge de nye arrays og så kør linierne igennem en for en men du følger indsætningen.

Det har jeg prøvet med fgl. resultat:

    a1    {Length=5}    string[]
    [0]    "00"    string
    [1]    "01"    string
    [2]    "02"    string
    [3]    "03"    string
    [4]    "04"    string
-    a2    {Length=5}    string[]
    [0]    "10"    string
    [1]    "11"    string
    [2]    "12"    string
    [3]    "13"    string
    [4]    "14"    string
Avatar billede nae Nybegynder
29. september 2006 - 09:17 #16
Når du mener indsætte et watch, mener du et breakpoint og at jeg skal steppe igennem ik?
Avatar billede nae Nybegynder
29. september 2006 - 09:44 #17
Jeg har fundet ud af det med et watch, der var åbenbart noget galt med arrayet...
Avatar billede mikkel_sommer Nybegynder
29. september 2006 - 10:15 #18
Cool :)
Avatar billede nae Nybegynder
29. september 2006 - 10:27 #19
Tak for hjælpen og du får dine velfortjente point. God weekend, og igen tak for svarene.
Avatar billede mikkel_sommer Nybegynder
29. september 2006 - 11:56 #20
Velbekommen og i lige måde :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester