Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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,:)

Předmět Autor Datum
konkretne ten 91,1 neviem preco ti nezobrazi, ale vseobecne pri pouziti realnych cisel, by si mal v…
nl12345 25.02.2012 11:31
nl12345
V knize Pascal pro zeneláče uvádí že mohu mít (x>=89)- a pokud je 89 vypíše to 1 bez problémů.
GGGMAN 25.02.2012 11:39
GGGMAN
podmienke kontrolovat iba ><, nikdy nie = To je nesmysl. Proc by nemohl požít = ? Minimalne je to s…
AZOR 25.02.2012 11:53
AZOR
Proc by nemohl požít = ? to iba pri realnych cislach a vo vseobecnosti, snad vies, ze realne cisla…
nl12345 25.02.2012 14:37
nl12345
jenze = ma porad svoje upotrebeni, proto tam ma jafi jednou interval < a jedno >= s tim rovná se. Te…
AZOR 25.02.2012 15:04
AZOR
ano pouzitie >=, <= je OK, ale pouzit iba = pri porovnavani realnych cisel moze dat nepredvidany vys…
nl12345 25.02.2012 15:43
nl12345
ano, muze, ale za to zodpovida programator, to znaminko ma sve pouziti ;) navic round(number,2) //…
AZOR 25.02.2012 15:52
AZOR
Round() zaokrouhluje na cele, RoundTo(cislo, pocet_mist) stejne jak v Oracle poslední
Jan Fiala 25.02.2012 16:38
Jan Fiala
Keď si niekde vypíšeš hodnotu x, naozaj má hodnotu 91.1? BTW, máš tam intervaly, ktoré nevyhodnocuj…
los 25.02.2012 11:48
los
Takže, nejprve program spočítá např 9 bodů z 10 = 90%, po kliknutí na button vyhodnotí výše uvedenou…
GGGMAN 25.02.2012 11:54
GGGMAN
Ps. intervaly (88;89), (75;76), (62;63) a (45;46) to vyhodnotí, schválně si to zkus :) Nevyhodnoti…
AZOR 25.02.2012 11:56
AZOR
Vyhodnotí :D fakt, mi to funguje
GGGMAN 25.02.2012 12:09
GGGMAN
viz. muj post ob losos
AZOR 25.02.2012 12:10
AZOR
intervaly (88;89), (75;76), (62;63) a (45;46) to vyhodnotí, schválně si to zkus Tak potom bude chyb…
los 25.02.2012 12:00
los
mimochodem vis jak se snaci intervaly, vid? (88,89) je otevřený interval, a rozhodně to neni ekviva…
AZOR 25.02.2012 12:09
AZOR
hele losové, clovek si pak rika "safra" umi linux, delphi, mysql atd. Ale budme uprimni, jste na nas…
AZOR 25.02.2012 11:59
AZOR
Pokud vás to až tak zajímá, uploadnul jsem to sem : http://leteckaposta.cz/414020143[/url]
GGGMAN 25.02.2012 12:11
GGGMAN
asi nekomu jinemu, muj linux (jak jsem ted zjistil a budu resit) rar archiv neumi a ani nevlastnim D…
AZOR 25.02.2012 12:18
AZOR
Ach to je škoda
GGGMAN 25.02.2012 12:19
GGGMAN
To je super program, kdyz k jednotlivym editum ani nenapises, co se tam ma zadavat a ani tlacitka js…
Jan Fiala 25.02.2012 12:20
Jan Fiala
To vis ze potrebuji, program je teprve ve vyvoji, takze vim jen ja co kam zadat :D Pozdeji to mam v…
GGGMAN 25.02.2012 12:27
GGGMAN
Když jsem opravil to posledni proceduru, tak to normalne chodi. Do editu zadam napr. 5 a 9, jako pro…
Jan Fiala 25.02.2012 12:35
Jan Fiala
Zadej 5 z 8
GGGMAN 25.02.2012 12:40
GGGMAN
62,5 % je to na hranici tam kde je (x<=62)
GGGMAN 25.02.2012 12:42
GGGMAN
Tohle opravdu nejde, protoze mas blbe ty podminky Zkus se nad tim chvilku zamyslet if (x>=63) and…
Jan Fiala 25.02.2012 12:45
Jan Fiala
Máš pravdu, děkuji za informace, a za čas který jste mi věnovali, snad někdy budu alespoň z poloviny…
GGGMAN 25.02.2012 12:46
GGGMAN
Podminky by se daly prepsat i jako: if x>=89 then edit4.text:=('1') else if x>=76 then edit4.text:=…
Jan Fiala 25.02.2012 12:52
Jan Fiala
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 1…
GGGMAN 25.02.2012 12:54
GGGMAN
Pokud tam chces zadavat i desetinna cisla, zmenit prevod editu na cislo. Obsah editu budes prevadet…
Jan Fiala 25.02.2012 12:57
Jan Fiala
na prevody z retezce na cislo je vhodne pouzivat funkci StrToIntDef() zadanibodu := StrToIntDef(edi…
Jan Fiala 25.02.2012 12:55
Jan Fiala
Mockrát děkuji ! :)
GGGMAN 25.02.2012 13:02
GGGMAN
A pokud tu ještě jsi :)) soucet := 0; for d := 0 to ListBox2.Items.Count - 1 do begin soucet := sou…
GGGMAN 25.02.2012 13:18
GGGMAN
Protože to udává pozici v ListeBoxItems - to máš jako šachy - věž stojí na pozici jedna, kun na pozi…
AZOR 25.02.2012 13:56
AZOR
Hlavne, že mi kompilátor vyhodil 5 chýb !!! To som s Tvojim výtvorom nič nerobil... Checking project…
pme 25.02.2012 12:27
pme
Nevím co teď máš namysli, jelikož se v tom zas tolik nevyznám. Mám Portable Delphi 7. Win 7 64.
GGGMAN 25.02.2012 12:29
GGGMAN
V programovacich jazycich se v cisle pouziva desetinna tecka, ne carka!
Jan Fiala 25.02.2012 12:14
Jan Fiala
To vím, ale podmínku ve které by bylo desetiné místo jsem nikam nepsal.. Takže tím to nebude.
GGGMAN 25.02.2012 12:17
GGGMAN
:-p a delphi nezařve? To je ale škaredý jazyk.
AZOR 25.02.2012 12:17
AZOR
Ale to vis, ze b yzarvalo, neslo by to zkompilovat, protoze podminka: if s < 2,3 je nesmysl
Jan Fiala 25.02.2012 12:21
Jan Fiala
Presne tak, máš pravdu! Avšak aj to sa dá programovo upraviť: DecimalSeparator:='.'; DecimalSeparat…
pme 25.02.2012 12:20
pme
ja si myslim taky, ze to rekl Honza dost tvrde - u Oracle to jde taky upravit (myslim i na ruzna zve…
AZOR 25.02.2012 12:22
AZOR
Tohle ma vliv pouze u konverze z retezce na cislo a naopak. Ale nema to vliv v podmince: if x < 2,3…
Jan Fiala 25.02.2012 12:22
Jan Fiala

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

if (x>88,5) and (x<101) then edit4.text:=('1');
if (x>75,5) and (x<88,5) then edit4.text:=('2');

podmienke kontrolovat iba ><, nikdy nie =

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á.

x<101

To zanfunguje, ale nevidim duvod proc by tam nemelo bajt <=100, pokud to ma dobre udelane a X se pohybuje od <0,100>

Proc by nemohl požít = ?

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.

Takže, nejprve program spočítá např 9 bodů z 10 = 90%, po kliknutí na button vyhodnotí výše uvedenou podminku. - Do editu vloží známku 1.
Pokud avšak zadam např. 4 body z 9 je to 44,444444444 % to už nevyhodnotí, nechápu proč.

Ps. intervaly (88;89), (75;76), (62;63) a (45;46) to vyhodnotí, schválně si to zkus :)

Ps. intervaly (88;89), (75;76), (62;63) a (45;46) to vyhodnotí, schválně si to zkus :)

Nevyhodnoti, viz ja a ten predchozi - myslis ze se mejlime vsichni tri? Ale tech 44,44 to vyhodnotit ma stejnej jako 91,1 takze otazka je jeste jedna - nepricitas k tomu neco, nezaokrouhlujes to?

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 :)

Tohle opravdu nejde, protoze mas blbe ty podminky

Zkus se nad tim chvilku zamyslet

if (x>=63) and (x<=75) then edit4.text:=('3');
if (x>=46) and (x<=62) then edit4.text:=('4');

a pak to uprav na:

if (x>=89) and (x<=100) then edit4.text:=('1');
if (x>=76) and (x<89) then edit4.text:=('2');
if (x>=63) and (x<76) then edit4.text:=('3');
if (x>=46) and (x<63) then edit4.text:=('4');
if x<46 then edit4.text:=('5');

Hlavne, že mi kompilátor vyhodil 5 chýb !!! To som s Tvojim výtvorom nič nerobil...
Checking project dependencies...
Compiling Project1.dproj (Debug configuration)
[DCC Error] Unit1.pas(116): E2032 For loop control variable must have ordinal type
[DCC Error] Unit1.pas(119): E2010 Incompatible types: 'Integer' and 'Double'
[DCC Error] Unit1.pas(125): E2029 ';' expected but '.' found
[DCC Error] Unit1.pas(127): E2029 Declaration expected but end of file found
[DCC Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas'
Failed
Elapsed time: 00:00:00.5

Aký kompilátor používaš?

Zpět do poradny Odpovědět na původní otázku Nahoru