Podmínka - delphi
Dobrý den, prosím o radu. Můj program počítá body na známky, podle procent, avšak pokud je procento s desetiným místem, podle téhle podmínky nevypíše co má :
x:= jeprocent;
if (x>=89) and (x<=100) then edit4.text:=('1');
if (x>=76) and (x<=88) then edit4.text:=('2');
if (x>=63) and (x<=75) then edit4.text:=('3');
if (x>=46) and (x<=62) then edit4.text:=('4');
if (x>=0) and (x<=45) then edit4.text:=('5');
X a jeprocent jsou Double;
Takže abych to shrnul, pokud je např 91% vypíše do edit4 známku 1, avšak pokud je procento 91,1%, nevypíše nic, jak na to? Děkuji za radu,:)
konkretne ten 91,1 neviem preco ti nezobrazi, ale vseobecne pri pouziti realnych cisel, by si mal v podmienke kontrolovat iba ><, nikdy nie =
myslim tym toto
ak mas if(x>=89), tak sa moze stat, ze ak x je 89, teda ta hranicna hodnota, tak podmienka bude vyhodnotena sko nesplnena - suvisi to s reprezentaciou realnych cisel v PC
cize prve dva riadky by som upravil asi takto
To je nesmysl. Proc by nemohl požít = ? Minimalne je to spatne napsane,
kazdopande souhlasim s tim, ze to co tam má nepokrývá všechny intervaly a proto některá čísla neprojdou sítem, wo tom žádná - nicméně matoucích je 91,1 to zrovna zafungovat má.
To zanfunguje, ale nevidim duvod proc by tam nemelo bajt <=100, pokud to ma dobre udelane a X se pohybuje od <0,100>
to iba pri realnych cislach a vo vseobecnosti, snad vies, ze realne cisla su v pocitaci reprezontovane ako zaklad a exponent.
Resp, realnych cisel je nekonecne vela, ale pocitac dokaze zobrazit iba obmedzenu mnozinu, takze ked das do podmienky = moze sa stat, ze akurat to tvoje cislo pocitac v ramci datoveho typu zobrazit nevie.
jenze = ma porad svoje upotrebeni, proto tam ma jafi jednou interval < a jedno >= s tim rovná se. Tech cisel je asi bzilion, presto porad eixstuje konkretni JEDNO v realnem svete i v rep. pocitacu ktere te podmince odpovida.
ano pouzitie >=, <= je OK, ale pouzit iba = pri porovnavani realnych cisel moze dat nepredvidany vysledok ;)
ano, muze, ale za to zodpovida programator, to znaminko ma sve pouziti ;)
navic round(number,2) // nevim uz jak se to pise v delphi, ale v Oracle to znamena zaokrouhleni na 2 des cisla s rovnase je realne cislo presto naprosto definovane pres rovnase ;)
Round() zaokrouhluje na cele, RoundTo(cislo, pocet_mist) stejne jak v Oracle
Keď si niekde vypíšeš hodnotu x, naozaj má hodnotu 91.1?
BTW, máš tam intervaly, ktoré nevyhodnocuješ (88;89), (75;76), (62;63) a (45;46).
hele losové, clovek si pak rika "safra" umi linux, delphi, mysql atd. Ale budme uprimni, jste na nas dva
Pokud vás to až tak zajímá, uploadnul jsem to sem : http://leteckaposta.cz/414020143[/url]
To je super program, kdyz k jednotlivym editum ani nenapises, co se tam ma zadavat a ani tlacitka jsi nepojmenoval
Jak mame vedet, co vyplnovat do jednotlivych editu?
Zkus popsat, co ma vlastne program delat a co mame zadat do jednotlivych editu, jestli jeste potrebujes pomoc
To vis ze potrebuji, program je teprve ve vyvoji, takze vim jen ja co kam zadat :D
Pozdeji to mam v planu doplnit
Takze :
Ve škole jsem z testu distal 5 bodů z 10
Edit1 : 5
Edit2 : 10
Klikneš na dlouhý button1 (procenta)
Program do editu 3 vypočítá kolik to je procent,
Kliknutím na button3(krátký procenta) spočítá známku podle podmínky kterou tu řešíme.
Tlačítkem Button4 přídá informace do Listboxů.
Buttonem5 maže z listboxu aktivní.
Butonem 6 počítá průměr procent z listboxů a vypisuje do edit8.
Ostatních si nevšímej :)
Jsi hodnej :)
Když jsem opravil to posledni proceduru, tak to normalne chodi.
Do editu zadam napr. 5 a 9, jako procenta se objevi 55,5555 a nasledna znamka pak 4
Takze podle mne je to podle tveho prvniho zadani v poradku
Zadej 5 z 8
Tohle opravdu nejde, protoze mas blbe ty podminky
Zkus se nad tim chvilku zamyslet
a pak to uprav na:
Máš pravdu, děkuji za informace, a za čas který jste mi věnovali, snad někdy budu alespoň z poloviny dobrej jako ty.
Děkuji.
(programuji teprve týden)
Podminky by se daly prepsat i jako:
Děkuji, pokud máš ještě čas, zkus mi zodpovědět ještě jeden dotaz, co když dostanu 4,5(4.5) bodů z 10... ?
Pokud tam chces zadavat i desetinna cisla, zmenit prevod editu na cislo.
Obsah editu budes prevadet ne jako celociselne cislo, ale jako cislo s desetinnou carkou.
na prevody z retezce na cislo je vhodne pouzivat funkci StrToIntDef()
Pokud dojde k chybe pri prevodu, vysledkem prevodu bude cislo, definovane jako druhy parametr.
Mockrát děkuji ! :)
A pokud tu ještě jsi
proč to d na konci, musí být Integer? Jinak mě to nechce pustit dál :(
Protože to udává pozici v ListeBoxItems - to máš jako šachy - věž stojí na pozici jedna, kun na pozici dva, střelec na pozici tři. Žádná figura nikdy nemuže stát na pozici 5.13. Udává to pozici v nějakém listu a to jsou typicky celá čísla, tedy integer.