Stránka 1 z 2

c # počet hodnot v poli  Vyřešeno

Napsal: 18 črc 2013 22:04
od agil
Zdravím, potřebuji zjistit kolik je v 2d poli odhalených políček = mají hodnotu 4.¨

Zkoušel jsem for cyklus, ale ten když narazí na to pole = 4, tak stále dokola přičítá.

Kód: Vybrat vše

 for (int a = 0; a < Array.x; a++)
                {
                    for (int b = 0; b < Array.y; b++)
                    {

                        if (Array.pole[a, b] == 4)
                        {

                            win += 1;



                        }



                    }




                }

Re: c # počet hodnot v poli

Napsal: 18 črc 2013 22:08
od CZechBoY
Zdravím,
tohle by mělo normálně fungovat, zkus si zalogovat co to všechno dělá, krok po kroku debugovat

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 07:39
od agil
No tady u toho stačí když odhalim jedno policko, tak to pricita porad +1. Jako kdyby ten cyklus byl nekonečej..

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 08:36
od faraon
Kde nastavuješ do toho win nulu? Neprovádíš náhodou tohle počítání v programu víckrát? Zkus tohle:
for (int a = 0, win=0; a < Array.x; a++)

Překladače si sice při optimalizacích poradí s lecčím, ale je dobré vědět že inkrementace je mnohem rychlejší než sčítání, takže místo win+=1; bych použil ++win;

A hned za to bych si dal kontrolní výpis, něco co ti ukáže stav na každém políčku kde tohle provádíš, asi takhle:
writeln(a," ",b," ",win);

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 10:51
od CZechBoY
faraon: tohle není céčko :D
ale připoměl si mi: nevoláš tenhle kod v nějaký metodě, co se volá pořád? (třeba draw, update, ...)

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 11:15
od faraon
Je to Céčko, akorát zprzněné na kvadrát, oklikou přes Javu, a na závěr do toho namíchali ještě mizerný M$ Basic z půlky sedmdesátých let, což je úplná katastrofa :lol:

Ale podle writeln bys měl hádat spíš Pascal, i když tady máš vlastně Console.WriteLine... ;-)

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 11:20
od CZechBoY
jj
btw debugoval sis to krok po kroku? nebo ses na to vys..?

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 13:00
od agil
No já si akorát nechal udělat výpis hodnoty win a je tam1 a porad to stoupá az k tisícům.. :-) zkoušel sem to dávat do paintu, timeru..nvm kam bych to dal.. A ještě skusim to co napsal faraon, nejsem na PC ted

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 13:07
od CZechBoY
to sis toho teda hodně vypsal
já bych si vypsal aktuální X, Y, hodnotu win
však využij toho suprovýho nástroje - visual studio

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 15:24
od agil
no, takže odhalim jedno pole
a ono to unej pořád přičítá win
viz obrázek
v timeru.. http://postimg.org/image/rqozf2heb/
v mouseclick.. http://postimg.org/image/9bb7ydrgn/
proste to to políčko vezme ne jednou, ale víckrát...a menit hodnotu prošlího pole nemužu
logicky tohle nemuze fungovat...ponevadz dycky kdyz prodje pole a narazi na policko s hodnotou 4 pricte 1, takze musim nejak udelat aby si pamatoval, ktery policka uz prosel...co mi poradite?

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 17:57
od faraon
Tak ještě jednou, přímo tam kde jsi vzal ten tvůj kousek kódu:
A nezapomeň tam připsat ten první řádek!

Kód: Vybrat vše

win = 0;
for (int a = 0; a < Array.x; a++)
    {
    for (int b = 0; b < Array.y; b++)
        {
        if (Array.pole[a, b] == 4)
           {
           win += 1;
           --- vypsat a,b,win ---
           }
        }
    }

Re: c # počet hodnot v poli

Napsal: 19 črc 2013 18:19
od agil
no presne takhle to mam akorat tam nemam to win,. to mam uplne nahore jako public int win = 0;

Kód: Vybrat vše

   for (int a = 0;a < Array.x; a++)
                {
                    for (int b = 0; b < Array.y; b++)
                    {

                        if (Array.pole[a, b] == 4)
                        {

                            win += 1;
                            textBox3.Text += a.ToString()+'|'+b.ToString()+','+win.ToString() + ','+ Environment.NewLine;
                           


                        }

                     

                    }




                }