rozpoznajD,O,M are double[1] with a single double inside.
progD,O,M are constant atm (0.5).
int i = 0
before the foreach loop.
Some additional variables declared before the loop:
double[] rozpoznajD, rozpoznajO, rozpoznajM;
trzysiecitab[] valid = new trzysiecitab[ileObrazkow * 3];
double[] progD, progO, progM;
progD = new double[] { 0.5 };
progO = new double[] { 0.5 };
progM = new double[] { 0.5 };
rozpoznajD = new double[1];
rozpoznajO = new double[1];
rozpoznajM = new double[1];
Problem is, in each step (every filename) the array valid overwrites it's previous values. Why is that happening?
To put it another way: after the loop finishes, each field has the value the last filename had.
Here's the code:
foreach(string filename in files) {
bmp1 = new Bitmap(Image.FromFile(filename));
rozpoznajD = ssn1.policzWyjscia(Pomocnicze.binaryzacja(bmp1));
rozpoznajO = ssn2.policzWyjscia(Pomocnicze.binaryzacja(bmp1));
rozpoznajM = ssn3.policzWyjscia(Pomocnicze.binaryzacja(bmp1));
if (filename.EndsWith("d.bmp")) {
if (rozpoznajD[0] > progD[0]) valid[i] = new trzysiecitab(rozpoznajM, 1, 'd');
else valid[i] = new trzysiecitab(rozpoznajM, 0, 'd');
if (rozpoznajO[0] < progO[0]) valid[i + 1] = new trzysiecitab(rozpoznajO, 1, 'o');
else valid[i + 1] = new trzysiecitab(rozpoznajO, 0, 'o');
if (rozpoznajM[0] < progM[0]) valid[i + 2] = new trzysiecitab(rozpoznajM, 1, 'm');
else valid[i + 2] = new trzysiecitab(rozpoznajM, 0, 'm');
i += 3;
} else if (filename.EndsWith("o.bmp")) {
if (rozpoznajD[0] < progD[0]) valid[i] = new trzysiecitab(rozpoznajM, 1, 'd');
else valid[i] = new trzysiecitab(rozpoznajM, 0, 'd');
if (rozpoznajO[0] > progO[0]) valid[i + 1] = new trzysiecitab(rozpoznajO, 1, 'o');
else valid[i + 1] = new trzysiecitab(rozpoznajO, 0, 'o');
if (rozpoznajM[0] < progM[0]) valid[i + 2] = new trzysiecitab(rozpoznajM, 1, 'm');
else valid[i + 2] = new trzysiecitab(rozpoznajM, 0, 'm');
i += 3;
} else if (filename.EndsWith("m.bmp")) {
if (rozpoznajD[0] < progD[0]) valid[i] = new trzysiecitab(rozpoznajM, 1, 'd');
else valid[i] = new trzysiecitab(rozpoznajM, 0, 'd');
if (rozpoznajO[0] < progO[0]) valid[i + 1] = new trzysiecitab(rozpoznajO, 1, 'o');
else valid[i + 1] = new trzysiecitab(rozpoznajO, 0, 'o');
if (rozpoznajM[0] > progM[0]) valid[i + 2] = new trzysiecitab(rozpoznajM, 1, 'm');
else valid[i + 2] = new trzysiecitab(rozpoznajM, 0, 'm');
i += 3;
}
}