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

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
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
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… nový
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… nový
AZOR 25.02.2012 15:04
AZOR
ano pouzitie >=, <= je OK, ale pouzit iba = pri porovnavani realnych cisel moze dat nepredvidany vys… nový
nl12345 25.02.2012 15:43
nl12345
ano, muze, ale za to zodpovida programator, to znaminko ma sve pouziti ;) navic round(number,2) //… nový
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
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
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… nový
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… nový
Jan Fiala 25.02.2012 12:35
Jan Fiala
Zadej 5 z 8 nový
GGGMAN 25.02.2012 12:40
GGGMAN
62,5 % je to na hranici tam kde je (x<=62) nový
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… nový
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… nový
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:=… nový
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… nový
GGGMAN 25.02.2012 12:54
GGGMAN
Pokud tam chces zadavat i desetinna cisla, zmenit prevod editu na cislo. Obsah editu budes prevadet… nový
Jan Fiala 25.02.2012 12:57
Jan Fiala
na prevody z retezce na cislo je vhodne pouzivat funkci StrToIntDef() zadanibodu := StrToIntDef(edi… nový
Jan Fiala 25.02.2012 12:55
Jan Fiala
Mockrát děkuji ! :) nový
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… nový
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… nový
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… nový
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. nový
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
:-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 nový
Jan Fiala 25.02.2012 12:21
Jan Fiala
Presne tak, máš pravdu! Avšak aj to sa dá programovo upraviť: DecimalSeparator:='.'; DecimalSeparat… nový
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… nový
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… nový
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.

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, 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 ;)

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

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');

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.

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