Witam
Mam klasy:
class LiczbaZespolona
{
private double czescRe;
public double CzescRe
{
get
{
return czescRe;
}
set
{
czescRe = value;
}
}
private double czescIm;
public double CzescIm
{
get
{
return czescIm;
}
set
{
czescIm = value;
}
}
public LiczbaZespolona(double re, double im)
{
this.czescRe = re;
this.czescIm = im;
}
class TablicaZespolonych
{
private List<LiczbaZespolona> listaLiczbZespolonych = new List<LiczbaZespolona>();
private Random rnd = new Random();
public TablicaZespolonych()
{
this.WypelnijTablice();
}
private void WypelnijTablice()
{
int rozmiar = rnd.Next(10, 20);
for (int i = 0; i < rozmiar; i++)
{
double a = rnd.Next(-100, 100);
double b = rnd.Next(-100, 100);
listaLiczbZespolonych.Add(new LiczbaZespolona(a, b));
}
}
I testuje je tak:
TablicaZespolonych tab1 = new TablicaZespolonych();
Console.WriteLine("Wypisanie zawartosci tablicy 1");
tab1.WypiszTabliceNaKonsoli();
TablicaZespolonych tab2 = new TablicaZespolonych();
Console.WriteLine("Wypisanie zawartosci tablicy 2");
tab2.WypiszTabliceNaKonsoli();
//tab1.DodajTablice(tab2);
//Console.WriteLine("Wypisanie sumy w tablicy 1");
//tab1.WypiszTabliceNaKonsoli();
Console.ReadLine();
W takiej postaci jak to teraz jest dziala ok, Obiekty tab1 i tab2 przechowuja rózne liczby zespolone i maja rozne wymiary. Ale jezeli odkomentarzuje zakomentarzonwana czesc z testu, tab1 i tab2 maja identyczne wartosci i wymiary a ich suma jest równa tab1+tab2. Skad to sie bierze?
podaje jeszcze metode dodawania tablicy z klasy TablicaZespolonych:
public void DodajTablice(TablicaZespolonych t2)
{
for(int i = 0; i < t2.listaLiczbZespolonych.Count; i++)
{
this.listaLiczbZespolonych[i].Dodaj(t2.listaLiczbZespolonych[i]);
}
if(t2.listaLiczbZespolonych.Count > this.listaLiczbZespolonych.Count)
{
for(int i = this.listaLiczbZespolonych.Count; i < t2.listaLiczbZespolonych.Count; i++)
{
listaLiczbZespolonych.Add(t2.listaLiczbZespolonych[i]);
}
}
}
Identyczny blad jest wtedy gdy w programie testujacym zrobie tak:
TablicaZespolonych tab1 = new TablicaZespolonych();
TablicaZespolonych tab2 = new TablicaZespolonych();
Console.WriteLine("Wypisanie zawartosci tablicy 1");
tab1.WypiszTabliceNaKonsoli();
Console.WriteLine("Wypisanie zawartosci tablicy 2");
tab2.WypiszTabliceNaKonsoli();
//tab1.DodajTablice(tab2);
//Console.WriteLine("Wypisanie sumy w tablicy 1");
//tab1.WypiszTabliceNaKonsoli();
Console.ReadLine();
Teraz znow obiekty tab1 i tab2 maja takie same wymiary i takie same wartosci.
Na pierwszy rzut oka random dziala dobrze i losuje faktycznie losowo liczby, staram sie znaleŹĆ gdzie przez referencje mieszam miedzy tab1 a tab2 ale tez tego nie widze. Jakby ktos mogl to prosilbym o pomoc w znalezieniu przyczyny takiego zachowania programu.