DU5
- nohis
- Matfyz(ák|ačka) level III
- Příspěvky: 128
- Registrován: 7. 11. 2004 13:39
- Typ studia: Informatika Mgr.
- Bydliště: Praha - Prosek / Krakovany
- Kontaktovat uživatele:
Re: typ pola
nebo by to šlo takto :Tresko píše:ja som pouzil takyto "trik" na zistenie typu pola:Kód: Vybrat vše
if (...->access_array()->compute_final_ptype() == ctx->tab->logical_bool()->compute_final_ptype())....
Kód: Vybrat vše
if (...->access_array()->compute_final_ptype() == PTYPE_INT/STR/BOOL atd...
v doxyšmejdu o tom PTYPE_BOOL/REAL atd... sem sice nic nenašel ale podívate-li se to implementace fce compute_final_ptype() tak si TCAT_INT odpovida s PTYPE_INT atd...
Kód: Vybrat vše
switch ( cat() )
{
case TCAT_ARRAY:
{
type_pointer baseltype = arrayType_()->element_type();
return baseltype->compute_final_ptype();
}
case TCAT_BOOL:
return mlaskal::PTYPE_BOOL;
case TCAT_RANGE:
case TCAT_INT:
return mlaskal::PTYPE_INTEGER;
case TCAT_REAL:
return mlaskal::PTYPE_REAL;
case TCAT_STR:
return mlaskal::PTYPE_STRING;
default:; // !!! internal error
return mlaskal::PTYPE_UNDEF;
}
-
- Admin(ka) level I
- Příspěvky: 635
- Registrován: 9. 6. 2005 12:33
- Typ studia: Informatika Mgr.
- Login do SIS: BUREJ3BM
- Bydliště: Konečně Vinohrady:)
- Kontaktovat uživatele:
Když na range hodíš dělení, násobení a vůbec jakoukoliv operaci, tak ti hodí CANNOTCONVERT. Viz ulití web:nohis píše:měl bych dotaz ještě k typu range...
vím že už se to tady řešilo, mám to přečtený ale uplně mi nění jasný jak to bude např. když budu dělit-násobit-... dva range nebo range s intem? je to chyba nebo prostě když je range vlastně integer tak ono to něco udělá když na to hodím to dělení-násobení... ?
O rangi ani slovo.* Unární + a - pro int (instrukce MINUSI) a real (instrukce MINUSR)
* Binární + pro int-int (instrukce ADDI), real-real (instrukce ADDR), real-int, int-real (instrukce CVRTIR a ADDR) a str-str (zřetězení - instrukce ADDS)
* Binární - a * pro int-int, real-real, real-int, int-real (instrukce SUBI, SUBR, MULI, MULR, případně CVRTIR)
* Binární / pro int-int, real-real, real-int, int-real s výsledkem real (instrukce DIVR, případně CVRTIR)
* Binární mod, div pro int-int s výsledkem int (instrukce MODI, DIVI)
When life gives you crap, make crap golems.
- nohis
- Matfyz(ák|ačka) level III
- Příspěvky: 128
- Registrován: 7. 11. 2004 13:39
- Typ studia: Informatika Mgr.
- Bydliště: Praha - Prosek / Krakovany
- Kontaktovat uživatele:
ok,díkes taky sem si to myslel, chtěl sem se jen ujistitgASK píše:Když na range hodíš dělení, násobení a vůbec jakoukoliv operaci, tak ti hodí CANNOTCONVERT. Viz ulití web:nohis píše:měl bych dotaz ještě k typu range...
vím že už se to tady řešilo, mám to přečtený ale uplně mi nění jasný jak to bude např. když budu dělit-násobit-... dva range nebo range s intem? je to chyba nebo prostě když je range vlastně integer tak ono to něco udělá když na to hodím to dělení-násobení... ?
O rangi ani slovo.* Unární + a - pro int (instrukce MINUSI) a real (instrukce MINUSR)
* Binární + pro int-int (instrukce ADDI), real-real (instrukce ADDR), real-int, int-real (instrukce CVRTIR a ADDR) a str-str (zřetězení - instrukce ADDS)
* Binární - a * pro int-int, real-real, real-int, int-real (instrukce SUBI, SUBR, MULI, MULR, případně CVRTIR)
* Binární / pro int-int, real-real, real-int, int-real s výsledkem real (instrukce DIVR, případně CVRTIR)
* Binární mod, div pro int-int s výsledkem int (instrukce MODI, DIVI)
někdo tady dříve napsal že range je vlastně takový retardovaný integer a retardovaný integer by třeba mohl taky mít právo na život, ehm tedy na nějakou tu binární operaci
- Kate
- Matfyz(ák|ačka) level III
- Příspěvky: 146
- Registrován: 8. 1. 2005 10:52
- Typ studia: Informatika Mgr.
- Login do SIS: opock4am
- Bydliště: Milada squat
- Kontaktovat uživatele:
to je sice pravda, ale v tom pripade by range byl opravdu jen na urceni mezi pole a nedalo by se s promennymi tohoto typu vubec nic delat (protote v DU6 uz zrejme budeme resit jine veci, nez napr. aritmeticke operace +,* apod.)gASK píše:
O rangi ani slovo.
navic tady byl prispevek:
ja osobne teda povoluju range na jakemkoliv miste, kde je mozne mit integer, protoze to v podstate je integer. nemyslim si, ze by tento pristup mel byt povazovan za chybny.andree píše:tak som pisal na ulitu - odpoved je, ak som to dobre pochopil, range:=integer + ziadne kontroly medzi + ziadne varovania
Člověk si nemusí nic myslet, aby něco udělal.
- rastik
- Supermatfyz(ák|ačka)
- Příspěvky: 661
- Registrován: 19. 10. 2005 21:45
- Typ studia: Informatika Mgr.
- Login do SIS: wartr3am
- Bydliště: Praha
- Kontaktovat uživatele:
Mam to rovnako. Range JE integer, ma len inu minimalnu a maximalnu hodnotu nez integer. Teda vsetky tie operacie sa daju urobit.Kate píše:to je sice pravda, ale v tom pripade by range byl opravdu jen na urceni mezi pole a nedalo by se s promennymi tohoto typu vubec nic delat (protote v DU6 uz zrejme budeme resit jine veci, nez napr. aritmeticke operace +,* apod.)gASK píše:
O rangi ani slovo.
navic tady byl prispevek:ja osobne teda povoluju range na jakemkoliv miste, kde je mozne mit integer, protoze to v podstate je integer. nemyslim si, ze by tento pristup mel byt povazovan za chybny.andree píše:tak som pisal na ulitu - odpoved je, ak som to dobre pochopil, range:=integer + ziadne kontroly medzi + ziadne varovania
-
- Admin(ka) level I
- Příspěvky: 635
- Registrován: 9. 6. 2005 12:33
- Typ studia: Informatika Mgr.
- Login do SIS: BUREJ3BM
- Bydliště: Konečně Vinohrady:)
- Kontaktovat uživatele:
Přesvědčili jste mne - hlavně pro to že to není problém upravit. Prostě si tam dole u načítání kostant / proměnných z ID připíšu i TCAT_RANGE. Ale jestli kvůli vám přijdu byť jen o bod - běda vámrastik píše: Mam to rovnako. Range JE integer, ma len inu minimalnu a maximalnu hodnotu nez integer. Teda vsetky tie operacie sa daju urobit.
Jinak - po 8 hodinách kódění jsem to právě dokončil. Trocha testování a mám klid. Takže vám všem, co ještě píšete přeji ať to brzy a správně dokončíte.
When life gives you crap, make crap golems.
- Tuetschek
- Supermatfyz(ák|ačka)
- Příspěvky: 657
- Registrován: 15. 6. 2005 13:54
- Typ studia: Nestuduji ale učím na MFF
- Login do SIS: duseo7af
- Kontaktovat uživatele:
To absolutne nechapu ... to jako range NEMA UMET scitani a odcitani ? To je trochu absurdni, ne? Ja aktualne s rangem pracuju stejne jako s integerem:
Fakt myslite ze se tohle delat nesmi? Ja teda pochopil tu odpoved z Ulity
Kód: Vybrat vše
symbol_pointer p = find_symbol( ... );
type_category c = p->access_local_variable()->type()->cat();
if ( c == TCAT_RANGE )
c = TCAT_INT;
tak, ze se to ma delat takhle nebo podobne.andree píše:tak som pisal na ulitu - odpoved je, ak som to dobre pochopil, range:=integer + ziadne kontroly medzi + ziadne varovania
Plug 'n' Pray.
- andree
- Matfyz(ák|ačka) level III
- Příspěvky: 106
- Registrován: 9. 12. 2006 17:00
- Typ studia: Informatika Mgr.
- Kontaktovat uživatele:
ja to tak nejak robim vzhladom na to ze fyzicky typ (ptype) toho range je podla zdrojakov rovnaky ako integer....
moja otazka je - myslite ze bude ulitakom vadit, ak v mojej du5 mam uz aj cast riesenia du6? nechcel som pri kodeni vytvarat novy "trunk", kedze tie projekty su skoro rovnake (a funkcne asi uplne)...
moja otazka je - myslite ze bude ulitakom vadit, ak v mojej du5 mam uz aj cast riesenia du6? nechcel som pri kodeni vytvarat novy "trunk", kedze tie projekty su skoro rovnake (a funkcne asi uplne)...