rotace voleb v C

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
M4r1hu4n3
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 27. srp 2006

rotace voleb v C

Příspěvek 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++;
}
"Lepší než za ženštinami hampejznými se píditi, jest plodníkem svým dvakrát týdně řádně zatřásti." Jan Amos Komenský
Zivan
Začátečník
Začátečník
Registrován: 30. čer 2005
Bydliště: Brno
Kontaktovat uživatele:

Re: rotace voleb v C

Příspěvek od Zivan »

Kód: Vybrat vše

if ([stisknuto tlacitko]) {
  volba++;
  if(volba > maximum)
    volba = 1;
}
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W
Exp
Začátečník
Začátečník
Registrován: 24. črc 2004
Bydliště: Tábor
Kontaktovat uživatele:

Re: rotace voleb v C

Příspěvek od Exp »

Do programátora mám hodně daleko, ale co to zkusit takhle?

if (tlacitko == HIGH) {
if (switch < 3) switch++;
else switch = 1;
}
M4r1hu4n3
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 27. srp 2006

Re: rotace voleb v C

Příspěvek od M4r1hu4n3 »

Super, funguje Zivan. Díky moc. Mě trubku nenapadlo použít tu hodnotu maximum. :-D
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.
"Lepší než za ženštinami hampejznými se píditi, jest plodníkem svým dvakrát týdně řádně zatřásti." Jan Amos Komenský
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: rotace voleb v C

Příspěvek od OndraSter »

Anebo nejkratší...

switch = switch == maximum ? 1 : ++switch;

by taky mělo jít :D .
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
Zivan
Začátečník
Začátečník
Registrován: 30. čer 2005
Bydliště: Brno
Kontaktovat uživatele:

Re: rotace voleb v C

Příspěvek 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:

Kód: Vybrat vše

s=++s>m?1:s;


// OndraSter - Jo máš recht, opraveno na ==, díky
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W
Maranov
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 21. črc 2006

Re: rotace voleb v C

Příspěvek od Maranov »

OndraSter píše:Anebo nejkratší...

switch = switch == maximum ? 1 : ++switch;

by taky mělo jít :D .
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. :-)
DESKTOP: C2D E8200 (pasivně); ATI HD 3870 (AC S1, 120 fan@5V); 4GB RAM; OCZ Vertex2 SSD 64GB; 320+320+250GB JBOD (odhlučněno); 2x FSC P19-2 (2056x1024)
MOBILE: Lenovo Thinkpad T420 4177 CTR, Crucial M4 SSD 128GB, 6GB RAM; FSC P19-2; Logitech G400
POCKET: Nokia Hulmia 800; Hitachi 500GB@Scythe Kamazo 2 (eSATA); Creative EP-630
AUDIO: Sennheiser HD 555 (foam mod), NuForce Icon µDAC, FLAC, ReplayGain, f2k

"A Man's mortality is a compass that points his way in life."
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

Re: rotace voleb v C

Příspěvek 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 :roll: .


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 :D .
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
Maranov
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 21. črc 2006

Re: rotace voleb v C

Příspěvek od Maranov »

Logicky ano, slyšel jsem o tom ale na škole - tam jsme používali gcc, podle něj je v

Kód: Vybrat vše

c = c++;
(tedy když jde o tu samou proměnnou vlevo i vpravo) nejasně definované pořadí výpočtu.
DESKTOP: C2D E8200 (pasivně); ATI HD 3870 (AC S1, 120 fan@5V); 4GB RAM; OCZ Vertex2 SSD 64GB; 320+320+250GB JBOD (odhlučněno); 2x FSC P19-2 (2056x1024)
MOBILE: Lenovo Thinkpad T420 4177 CTR, Crucial M4 SSD 128GB, 6GB RAM; FSC P19-2; Logitech G400
POCKET: Nokia Hulmia 800; Hitachi 500GB@Scythe Kamazo 2 (eSATA); Creative EP-630
AUDIO: Sennheiser HD 555 (foam mod), NuForce Icon µDAC, FLAC, ReplayGain, f2k

"A Man's mortality is a compass that points his way in life."
matajon
Začátečník
Začátečník
Uživatelský avatar
Registrován: 22. lis 2005
Bydliště: Dobruška
Kontaktovat uživatele:

Re: rotace voleb v C

Příspěvek 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 :-D
Post powered by Microsoft® Windows Vista™ Business
No trees or animals were killed during sending this message
Odpovědět

Zpět na „Programování a web“