Stránka 1 z 1
rotace voleb v C
Napsal: pát 12. úno 2010, 15:50
od M4r1hu4n3
Jak by šlo udělat rotaci voleb v C? Jedná se mi o to že při stisku tlačítka se posune volba o jednu dál, když dojde na určitou volbu tak při dalším stisknutí potřebuju vrátit na začátek. Zkusil jsem kontrolovat hodnotu switche, a pokud by bylo stisklé tlačítko a zároveň hodnota switche by byla na maximu tak přiřazení switchi hodnotu 1, to mi moc nechce spolupracovat. Má někdo lepší nápad? Spíš asi teorii, nejedná se úplně o čisté C, ale o Wired.
tohle mi volí nahoru, pak potřebuju skočit zas na 1 a pořád dokola:
Kód: Vybrat vše
if (tlacitko == HIGH && switch < 3) {
switch++;
}
Re: rotace voleb v C
Napsal: pát 12. úno 2010, 15:55
od Zivan
Kód: Vybrat vše
if ([stisknuto tlacitko]) {
volba++;
if(volba > maximum)
volba = 1;
}
Re: rotace voleb v C
Napsal: pát 12. úno 2010, 15:58
od Exp
Do programátora mám hodně daleko, ale co to zkusit takhle?
if (tlacitko == HIGH) {
if (switch < 3) switch++;
else switch = 1;
}
Re: rotace voleb v C
Napsal: pát 12. úno 2010, 16:01
od M4r1hu4n3
Super, funguje Zivan. Díky moc. Mě trubku nenapadlo použít tu hodnotu maximum.

Exp, myslím že by to taky pracovalo jak na to tak koukám. Že mi takhle rychle odpoví dva lidi jsem nečekal, opravdu moc děkuju.
Re: rotace voleb v C
Napsal: pát 12. úno 2010, 19:49
od OndraSter
Anebo nejkratší...
switch = switch == maximum ? 1 : ++switch;
by taky mělo jít

.
Re: rotace voleb v C
Napsal: pát 12. úno 2010, 20:02
od Zivan
Mas tam chybu, kdyz switch = maximum, tak to stejne pricte jeste 1
Ale timhle bych mu nepletl hlavu, to se za chvili dostane k:
// OndraSter - Jo máš recht, opraveno na ==, díky
Re: rotace voleb v C
Napsal: pát 12. úno 2010, 20:58
od Maranov
OndraSter píše:Anebo nejkratší...
switch = switch == maximum ? 1 : ++switch;
by taky mělo jít

.
Tyhle zápisy jsou v C prý nebezpečné, protože není přesně jasné, kdy dojde ke zvýšení... některé kompilátory (gcc) jsou v tomhle neexaktní a překládají si to různě.
Beztak tam nějaký ten Jump(If)Equal bude muset být, takže tahle kontrukce je jen kratší na zápis.

Re: rotace voleb v C
Napsal: pát 12. úno 2010, 22:15
od OndraSter
Co si budem namlouvat, on opravdu každý kompilátor si dělá co chce (nedávno známý řešil problém s šablonami v c++, kde gcc odmítalo kód (deklarace funkce s mapou?), který pod VC fungoval tak, jak měl).
Prostě opensource no
.
Jinak to moje by opravdu mělo fungovat tak, jak se očekává (podle logiky), pokud kompilátor je správně napsaný... Musím to někdy ozkoušet

.
Re: rotace voleb v C
Napsal: pát 12. úno 2010, 22:30
od Maranov
Logicky ano, slyšel jsem o tom ale na škole - tam jsme používali gcc, podle něj je v
(tedy když jde o tu samou proměnnou vlevo i vpravo) nejasně definované pořadí výpočtu.
Re: rotace voleb v C
Napsal: ned 14. úno 2010, 10:46
od matajon
OndraSter: Kromě toho, že to není nejkratší, tak to ani není nejčitelnější.
Já bych se asi úplně vyhnul nějakým podmínkám a použil jenom -
Kód: Vybrat vše
switch = (switch + 1) % pocetMoznosti
// OndraSter - ok, vyhrál jsi
