Nie "widać" tablicy choć została utworzona

0

Witam wszystkich serdecznie. W klasie mam metodę która tworzy mi potrzebne tablice. Po wywołaniu jednej z metod chcąc przepisać znak z jednej tablicy znaków do drugiej tablicy znaków, wyrzuca mi błąd "Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu." Co ciekawe jedna z tablic char posiada przypisana do niej wartość. Ma ktoś sugestie w czym jest problem ?

skrawek kodu:

        public void UtworzTablice()
        {
            tablica_real1 = new double[rozmiar_populacji];
            tablica_Funk_celu = new double[rozmiar_populacji];
            tablica_binarna = new string[rozmiar_populacji];
            tablica_pozycji_mutacji = new string[rozmiar_populacji];
            tablica_binarna_zmutowana = new string[rozmiar_populacji];
            tablica_real2 = new double[rozmiar_populacji];
            tablica_Funk_celu_nowa = new double[rozmiar_populacji];
            temp_stary_osobnik = new char[dlugosc_chromosomu];
            temp_nowy_osobnik = new char[dlugosc_chromosomu];
        }
public void Mutowanie()
        {
            for (x = 0; x < rozmiar_populacji; x++)
            {
                temp_stary_osobnik = tablica_binarna[x].ToCharArray();
                
                for (y = 0; y < dlugosc_chromosomu; y++)
                {
                    r = Math.Round(losuj.NextDouble(), dokladnosc);

                    if (r <= prawdopodobienstwo_mutacji)
                    {
                        if (temp_stary_osobnik[y] == 1)
                        {
                            temp_nowy_osobnik[y] = Convert.ToChar(0);

                            if (y == 0)
                            {
                                temp_pozycja_mutacji = tablica_pozycji_mutacji + Convert.ToString(y+1);
                            }
                            else
                            {
                                temp_pozycja_mutacji = tablica_pozycji_mutacji + ", " + Convert.ToString(y + 1);
                            }
                            
                        }

                        if (temp_stary_osobnik[y] == 0)
                        {
                            temp_nowy_osobnik[y] = Convert.ToChar(1);

                            if (y == 0)
                            {
                                temp_pozycja_mutacji = tablica_pozycji_mutacji + Convert.ToString(y + 1);
                            }
                            else
                            {
                                temp_pozycja_mutacji = tablica_pozycji_mutacji + ", " + Convert.ToString(y + 1);
                            }
                        }

                    }

                    if (r >= prawdopodobienstwo_mutacji)
                    {
                        temp_nowy_osobnik[y] = temp_stary_osobnik[y];  // W tym miejscu wyrzuca błąd
                    }
                }

                tablica_binarna_zmutowana[x] = Convert.ToString(temp_nowy_osobnik);
                tablica_pozycji_mutacji[x] = Convert.ToString(temp_pozycja_mutacji);

                temp_stary_osobnik = null;
                temp_nowy_osobnik = null;
                temp_pozycja_mutacji = null;
            }
        }

tablica char temp_stary_osobnik posiada przypisane do niej wartości, natomiast tablica temp_nowy_osobnik ma wartość null mimo iż została utworzona.

0

Owszem, ale po pierwszym kroku pętli (na końcu) ją zwalniasz.

0

zrób raczej jedną tablicę, której elementami będą klasy albo struktury przechowujące wszystkie pola, a nie na odwrót, czyli wiele tablic a w każdej po jednym polu.

0

Jak na razie chcę najprościej jak się da, jestem początkujący w programowaniu.

Ciut pozmieniałem i nadal mam "krzaki". Zapewne przy przepisywaniu wartości z jednej tablicy znaków do drugiej. Jak to naprawić ? Jak wiać na rysunku (dostępny w załączniku) przepisuje wartość ze ' \ ' przez to w wyniku paskudnie to wygląda

EDIT:
Już wiem w czym był błąd.... w if'ach porównywało z 1 bądź 0, a powinno z '1' , '0'.

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