Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 3.059 pregleda

Najnovija ↓

Problem sa punjenjem liste elementima 02.05.2016. u 21:52 · pre 127 meseci #1
Imam jedan početnički problem.

Imam strukturu SomeStruct koja ima parametar Param i metodu Update koja menja vrednosti tog parametra svaki put kada se pozove.
Takođe imam HistoryList koja je List<SomeStruct> i u koju sa add dodajem mySomeStruct (tipa SomeStruct) svaki put kad ga apdejtujem sa Update. Na kraju kad se napravi lista, ispostavi se da svaki element liste HistoryList ima istu vrednost Param parametra. Probao sam čak i sa Copy constructor metodom u SomeStruct i ne vredi, uvek budu svi param isti. Takođe sam proverio sa Debug u toku rada, Param se menja ali na kraju kad se napravi lista, svi elementi imaju vrednost poslednjeg apdejtovanog parametra.
Šta mi je činiti da zapamtim sve my SomeStruct kao posebne objekte u listi?

Svaki put kreiranje novog mySomeStruct objekta ne dolazi u obzir jer Update zavisi od prethodnog stanja.
Potpis
rs.ceevee.com/nenad.curcic
Re: Problem sa punjenjem liste elementima 02.05.2016. u 22:00 · pre 127 meseci #2
Postavi kod ovde, nešto radiš veoma pogrešno...

Citat:

Svaki put kreiranje novog mySomeStruct objekta ne dolazi u obzir jer Update zavisi od prethodnog stanja.

Naravno da dolazi u obzir, samo nam pojasni zavisnost od prethodnog stanja...
Re: Problem sa punjenjem liste elementima 02.05.2016. u 22:07 · pre 127 meseci #3
Metod klase u kome se koristi struktura WeightsCollection

Code:

 private WeightsCollection myWeights;
 private List<WeightsCollection> weightsHistory;

 public List<double> CalculateResult(int noOfCicles)
        {
            List<double> result = new List<double>();

            double y;
            List<double> rowValues = myData.GetRandomRow(out y);
            weightsHistory.Clear();
            for (int i = 0; i < noOfCicles; i++)
            {
                double hw = CalculateHw(CalculateZ(myWeights, rowValues));
                rowValues = myData.GetRandomRow(out y);
                myWeights.UpdateWeights(rowValues,hw,y,alpha);
                weightsHistory.Add(new WeightsCollection(myWeights));
            //    Debug.WriteLine(i .ToString() + ". myWeights = " + myWeights.Weights[0].ToString() + " => " + weightsHistory[i].Weights[0].ToString());
            }

            result = myWeights.Weights;

            return result;
        }


Struktura WeightsCollection
Code:

public class WeightsCollection
    {
        private List<double> weights;

        public List<double> Weights
        {
            get { return weights; }
        }
        public WeightsCollection(WeightsCollection copyWeights)
        {
            weights = copyWeights.weights;
        }

        public void UpdateWeights(List <double> inX, double hw, double y, double alpha)
        {
              // neka kalkulacija koja menja vrednosti weights
        }
}
Potpis
rs.ceevee.com/nenad.curcic
Re: Problem sa punjenjem liste elementima 02.05.2016. u 22:09 · pre 127 meseci #4
E da, u pitanju je klasa, ne struktura, pobrkao sam sa nečim drugim u kodu, a kasno je... :)
Potpis
rs.ceevee.com/nenad.curcic
Re: Problem sa punjenjem liste elementima 02.05.2016. u 22:12 · pre 127 meseci #5
Pa vidim da si pobrkao, velika razlika... :)
A i onaj copy construktor nije dobar jer ne pravi kopiju...
Re: Problem sa punjenjem liste elementima 02.05.2016. u 22:16 · pre 127 meseci #6
Da li on i listu samo dodaje referencu na jedan te isti objekat? Tako je možda bilo pre nego što sam dodao copy constructor. Prvo sam napisao
Code:

weightsHistory.Add(myWeights);

Možda sam trebao sa copy constructorom al kako onda da ga napišem?
Potpis
rs.ceevee.com/nenad.curcic
Re: Problem sa punjenjem liste elementima 02.05.2016. u 22:19 · pre 127 meseci #7
Na brzaka:
Code:

public WeightsCollection(WeightsCollection copyWeights)
{
    weights = new List<double>(copyWeights.weights);
}
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme