Egy kis ötletre lenne szükségem. Adott a következő:
van egy képlet, aminek több pozíciójába előre ismeretlen érték kerül, egy adatbázisból. Ez eddig rendben, viszont az ismeretlen értéknek a mértékegysége is ismeretlen. (Ez mondjuk nem teljesen igaz, lehet egy listát készíteni a lehetséges mértékegységekről).
Mondok példákat, hogy jobban lehessen érteni.
Az eredmény mondjuk J-ban kell.
A képletem A + C, de A is és C is lehet egy további képlet eredménye.
Az esetek: Ha az jön az adatbázisból, hogy A1 mondjuk 10 J, akkor ezzel nincs több dolgom, A=A1, A-t hozzáadom a C részhez, és kész.
Ha az jön az adatbázisból, hogy A1 = J/h, akkor előveszem a B-t, ami nem adatbázisból jön, és mindíg h a mértékegysége és azt mondom, hogy A = A1 * B, és így lesz J dimenziójú A-m, amit hozzáadok a C-hez.
Lehet, hogy az jön ki az adatbázisból, hogy A1 = x m3/h, akkor A = A1 * B * D, ahol B h-ban van, D meg J/m3-ben.
A lényeg az, hogy a fentit a lehető legegyszerűbben szeretném megoldani, és a lehető legrugalmasabban, hogy ha új mértékegység jön a képbe, akkor ne kelljen a programot módosítani.
Most nincs jobb ötletem, mint a fent vázolt, tehát az eredeti képlet minden adatbázisból érkező részét külön külön megvizsgálni, és minden jelenleg ismert esetet külön lekezelni.
De mi van, ha egyszer mondjuk A1 az adatbázisból m3-ben, vagy l-ben, vagy MJ/h-ban vagy valami másban érkezik?
Szóval van valami ötletetek, hogy lehet ezt általánosan, rugalmasan és szépen kezelni?
G
- 5536 megtekintés
Hozzászólások
Le kell rakni a képlethez, hogy milyen mértékegységgel számol. Amikor kapod az adatot, kell jönnie hozzá a mértékegységnek. Feltételezve, hogy az átváltás mindig szorzás, egy adatbázisba lerakott átváltótáblázattal a képlet mértékegységére alakítod a bejövő adatot.
- A hozzászóláshoz be kell jelentkezni
Hmm. Ezt nem erzem annyival nagyon másnak.
Ha jól értem, arra gondolsz, hogy ne a programban legyen if-es vagy case elágazás, hanem egy adatbázisban, hogy X-ből Y-nal lehet (kell) mondjuk Z-t csinálni, aztán ha Z még nem az, ami
nekem kell, akkror megint megnézem, hogy Z-ből mivel kell továbblépni, addig, amíg el nem érem a kívánt mértékegységet.
Végülis... Jobb, mint amit eddig gondoltam.
Elsőre azt gondoltam, hogy mivel a különböző részekben (pl. A meg C) más és más mennyiségek vannak, tehát B1 J/h kell A esetben, és B2 J/h a C esetben, de ezt végülis ki tudom védeni,
fentről csak azt kell mondanom, hogy a B-t kell használni, és a program majd kiválasztja,
hogy melyik is kell neki.
Köszi, ezen még gondolkozom, hogy megfelelő lesz-e.
G
- A hozzászóláshoz be kell jelentkezni
en szimbolikus modositasokkal csinalnam meg.
nyilvan minden adathoz megvan a mertekegysege.
egy eleg altalanos fuggvenyre van igy szukseged, ami atalakitja az egyiket a masikba. pl j/h bol kell j-t csinalni. j/h egy hanyados, tehat szorozni kell h-val igy kapod meg j-t.
gyakorlatilag csak szabalyokat kell igy megadnad a fuggvenynek, pl a fenti peldahoz azt hogy
d(x(a)/b) -> x(a)*b
ahol d a differencial "operator", x jelelzi, amin vegre kell hajtani a differencialast, es a nyil jobb oldala monja mit kell csinalni, hogy x(a)-t kapd vissza.
igy barmi uj mertekegyseg johet, legfeljebb(ritkan) egy-egy uj szabalyt kell kesziteni.
zsolt
- A hozzászóláshoz be kell jelentkezni