• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tablica postrzępiona w klasie

Mały hosting, OGROMNE możliwości
0 głosów
300 wizyt
pytanie zadane 26 lipca 2017 w C# przez KlejnotNilu Użytkownik (750 p.)

Cześć. Mam dosyć głupi problem, a mianowicie:

Chcę stworzyć klasę, w która będzie symulowała macierz trójkątną. Chciałbym do tego wykorzystać tablicę postrzępioną, lecz konstruktor wyrzuca mi wyjątek System.NullReferenceException.

 

Główny program:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JaggedArrays.Models;

namespace JaggedArrays
{
    class Program
    {
        static void Main(string[] args)
        {
            var matrix = new TriangleMatrix(4, new double[,] { { 1, 3, 4, 7 }, { 3, 5, 7, 3 }, { 8, 5, 1, 7 }, { 1, 0, 5, 6} });
        }
    }
}

Klasa:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JaggedArrays.Models
{
    class TriangleMatrix
    {
        public int Size { get; private set; }
        private double[][] _values;

        public TriangleMatrix(int size, double[,] values)
        {
            Size = size;

            for (int i = 0; i < Size; i++)
            {
                _values[i] = new double[i+1]; // coś tu jest nie tak :/
            }
        }
    }
}

 

1 odpowiedź

+2 głosów
odpowiedź 26 lipca 2017 przez fenq80 Bywalec (2,940 p.)
wybrane 26 lipca 2017 przez KlejnotNilu
 
Najlepsza

Źle deklarujesz tablice _values. Na początku np w konstruktorze powinieneś stworzyć pierwszy wymiar: 

_values = new double [Wymiar][];

A potem w metodzie TriangleMatrix w forze możesz tworzyc :

_values[i] = new double [i+1];

 

Lub odrazu stworzyć wszystkie wymiary:

_values = new duble [][]
{
    new double [i+1],
    ...
}

Niestety nie dokonca zrozumiałem co chcesz zrobić. 

Pozdrawiam.

 

komentarz 26 lipca 2017 przez KlejnotNilu Użytkownik (750 p.)

Ale głupie przeoczenie indecision

Chciałem stworzyć macierz trójkątną dolną korzystając z tablic postrzępionych. Tutaj poprawiony kod:

Klasa:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JaggedArrays.Models
{
    class TriangleMatrix
    {
        public int Size { get; private set; }
        private double[][] _values;

        public TriangleMatrix(int size, double[,] values)
        {
            Size = size;
            _values = new double[size][];

            for (int i = 0; i < Size; i++)
            {
                _values[i] = new double[i+1];
                for (int j = 0; j < i+1; j++)
                {
                    _values[i][j] = values[i, j];
                }
            }
        }

        public void Print()
        {
            for (int i = 0; i < Size; i++)
            {
                for (int j = 0; j < _values[i].Length; j++)
                    Console.Write($"{_values[i][j]} ");
                Console.WriteLine();                
            }
        }

      
    }
}

Main:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JaggedArrays.Models;

namespace JaggedArrays
{
    class Program
    {
        static void Main(string[] args)
        {
            var matrix = new TriangleMatrix(4, new double[,] { { 1, 3, 4, 7 }, { 3, 5, 7, 3 }, { 8, 5, 1, 7 }, { 1, 0, 5, 6} });
            matrix.Print();

            Console.ReadKey();
        }
    }
}

Out:

1
3 5
8 5 1
1 0 5 6

Dzięki wielkie za pomoc smiley

komentarz 26 lipca 2017 przez fenq80 Bywalec (2,940 p.)
Spoko.  Nie ma sprawy.  Ciesze się ze mogłem pomóc ;)

Podobne pytania

0 głosów
1 odpowiedź 443 wizyt
0 głosów
1 odpowiedź 537 wizyt
pytanie zadane 6 sierpnia 2019 w C# przez Bezy Bywalec (2,280 p.)
+2 głosów
0 odpowiedzi 418 wizyt
pytanie zadane 13 kwietnia 2017 w C# przez liledusty Obywatel (1,430 p.)

93,718 zapytań

142,631 odpowiedzi

323,263 komentarzy

63,266 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...