Dynamiczne rozmiary macierzy - problem

0

Witam,

Mam zrobić program do mnożenia ciągu macierzy. Zrobiłem już następujące elementy:

  1. Użytkownik podaje ile ma być macierzy - działa;
  2. Następnie dynamicznie tworzona jest odpowiednia liczba numericUpDown-ów do podania liczby wierszy i kolumn macierzy do pomnożenia. I tutaj działa spoko ale dla ilości macierzy=1, gdy podam np. 2 lub 3 wysypuje mi się program i dostaje komunikat:

An unhandled exception of type 'System.NullReferenceException' occurred in macierz.exe

Additional information: Object reference not set to an instance of an object.

user image

Proszę o pomoc, nie wiem co robie źle.
Pozdrawiam.

0

Właściwie nie znam się na tym języku, ale:
Sprawdź, czy K nie jest większe, od tablicy "numeric_ref_wiersze".

0

Albo, czy nie istnieje komponent "Wiersze"

0

Taki błąd dostajesz ponieważ numeric_ref_wiersze z indeksem k jest nullem, a null przecież nie może mieć metod, atrybutów etc.

0

OK, ale nie rozumiem dlaczego dla jednej macierzy jest dobrze a dla więcej pojawia się błąd.
A k na pewno nie jest większe od numeric_ref_wiersze i numeric_ref_kolumny:

numeric_ref_wiersze = new NumericUpDown[ilosc_mac];
numeric_ref_kolumny = new NumericUpDown[ilosc_mac];

Dalej proszę o pomoc.

0

Kod wygląda poprawnie... jedyne wyjście debug krok po kroczku, ze sprawdzaniem wartosci po wartosci i śledzenie co się dzieje ze zmiennymi.

To nie jest cały kod, może coś innego babra i zeruje Ci zmienne?

0

Sprawdzałem debugiem krok po kroku i cały czas nie wiem czemu dla jednej macierzy działa a dla większej ilości nie. Nie wiem czemu numeric_ref_kolumny[k] i numeric_ref_wiersze[k].Value stają się nullami.

dalej czekam na wskazówki.

0

Tak na moje oko to

numeric_ref_wiersze = new NumericUpDown[ilosc_mac];
numeric_ref_kolumny = new NumericUpDown[ilosc_mac];

Daj ponad for'a

czyli

        private void button1_Click(object sender, EventArgs e)
        {
            ilosc_mac = Convert.ToInt32(numericUpDown_il_mac.Value);

            int pointX1 = 20;
            int pointX2 = 95;
            numeric_ref_wiersze = new NumericUpDown[ilosc_mac];
            numeric_ref_kolumny = new NumericUpDown[ilosc_mac];
            for (int i = 0; i < ilosc_mac; i++ )
            {
            .....

Bo np dla 3 macierzy 3 razy inicjujesz numeric_ref_wiersze i numeric_ref_kolumny i kasuja Ci się te poprzednie wartosci co zapisałes, tak wiec po skonczeniu tabela numeric_ref_wiersze = {null, null, wiersze3}

0

Tak, to o to chodziło:), działa.
dynmatrix dzięki za wskazówkę:) teraz mogę lecieć dalej z tym programem:)

Pozdrawiam

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