Błąd przy przepisywaniu wartości z tablicy do tablicy

0

Witam,

Napisałem kod do przepisywania elementów tablicy 1D do tablicy 2D - co czwarty element.

public static byte[,] Convert1DArray(byte[] array, int width, int heigth)
        {
            int N = width;
            int M = heigth;

            byte[,] tab = new byte[N, M];

            int r = 0, c = 0;
            for (int i = 0; i < array.Length; i += 4)
            {
                Console.Write(tab[r, c] + " ");
                tab[r, c++] = array[i];
                Console.WriteLine(tab[r, c] + " ");
                if (c % M == 0)
                {
                    c = 0;
                    ++r;
                }
            }

            return tab;
        }

Visual w oknie danych wyjściowych wypisuje mi:
0 0
0 0
0 0
0 0
itd.

Gdzie popełniam błąd?

0

Powiedz mi co ta metoda ma robić . To jest tak napisane że nawet nie chce mi się tego czytać..

0

Wklej cały program , co wysyłasz do tej metody i napisz w 2-3 zdaniach co ta metoda ma zwrócić .

0
tab[r, c++] = array[i];
 Console.WriteLine(tab[r, c] + " ");

to powoduje że np przypisujesz do tab[0,0] ale wyświetlasz już tab[0,1]

0

Ja bym coś takiego próbował.

        public static byte[,] Convert1DArray(byte[] array, int width, int heigth)
        {
            int N = width;
            int M = heigth;
            byte[,] tab = new byte[N, M];

            for (int j = 0; j < N; j++)
            {
                for (int i = 0; i < M; i+=4)
                {
                    tab[j, i] = array[j* N + i];
                }
            }
            return tab;
        }
0

kod mimo ze nadmiarowy i skomplikowany wydaje sie ok, pokaz jak uzywasz tej funkcji (ze wszystkimi definicjami parametrow ktore przekazujesz). nie uzywaj inkrementacji w indeksie.

0

Jak jest dobrze napisany kod to wystarczy rzucić okiem i wiadomo o co chodzi bez odszyfrowywania .

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