PCPROG.6

25 Sep 1995 - 24 Dec 1999

Topics

  1. algoritmi (449)
  2. baze.podataka (309)
  3. ms.dos (17)
  4. windows (294)
  5. asembler (553)
  6. basic (458)
  7. jezici (42)
  8. pascal (1297)
  9. cccc (522)
  10. cpp (299)
  11. clipper (601)
  12. fox (70)
  13. cavo (14)
  14. delphi (1130)
  15. java (100)
  16. razno (776)
  17. unknown (127)

Messages - pascal

pascal.1238 ventura, -> #1237, emajsijuen
> To je lako, a ? Aj' mi onda napravi (onako, na brzaka) jedan viewer za > recimo *.PCX fajlove (kad si ih vec pomenuo). Ako ti treba opis formata, > javni mi pa da ga iskopam negde sa NET-a... ;) PCX skoro pa da nema nikakav format, uzmi lepo ucitaj file i napravi petlju koja proverava koja je vrednost dati byte, i shodno tome ispises boju... malo matematike al je barem lako... VeNTuRa
pascal.1239 jjerry, -> #1238, ventura
>> boju... malo matematike al je barem lako... Ma da,a i matematike skoro da nema,osim operacija +,* itd. :) Uostalom,milion programa na Netu koji se bave recimo texture mappingom u sebi imaju kod za chitanje .PCX. Trivijalno bre..
pascal.1240 ventura, -> #1239, jjerry
> Ma da,a i matematike skoro da nema,osim operacija +,* itd. :) > Uostalom,milion programa na Netu koji se bave recimo texture > mappingom u sebi imaju kod za chitanje .PCX. Trivijalno bre.. Pa jebiga... Nego ko li je trazio, ovaj sors. Sad se setih. Ja imam bbs posvecen upravo ovim stvarima ;) koji za divno cudo ima gomilu sorseva u pascalu... loguj se od 22-06 pa skini... Nickeldon BBS (011) 3942592
pascal.1241 goxi,
Hi! Kako resiti sledeci problem...javlja mi : "Stack overflow error" ! Probao sam sa povecanjem Stack Size-a (Options/memory size), ali to ne pomaze. Goran.,
pascal.1242 jjerry, -> #1241, goxi
>>Kako resiti sledeci problem...javlja mi : "Stack overflow error" ! >>Probao sam sa povecanjem Stack Size-a (Options/memory size), ali to >>ne pomaze. Ponekad mozhe da pomogne da ruchno (pomocu onih direktiva koje se stavljaju u { } ) povetjash stek. Inache,mislim da ti se to javlja neka rekurzija koja izgleda nije najpametnije osmishljena,pa bi mogao da pregledash rek. procedure ako ih imash.. Poz,J.J..
pascal.1243 gkosta,
Evo problema, da li mi neko moze pomoci: type covek=record ime:string[20]; prezime:string[20]; end; slog:record ljudi:array [1..50] of covek; end; Potrebno mi je da ovaj niz bude neogranicen (znaci ljudi>=1). Sta da radim? Pozdrav
pascal.1244 jjerry, -> #1243, gkosta
>>type >> covek=record >> ime:string[20]; >> prezime:string[20]; >> end; >> slog:record >> ljudi:array [1..50] of covek; >> end; Prvo,ne bi bilo loshe da pishesh malo sa uvlachenjima/izvlachenjima,tj. da text ne bude poravnat kao ovde. Drugo,malo mi nisu ovi end-ovi jasni. Ovaj prvi bi trebalo da bude kraj definisanja tipa chovek,ali za shta sluzhi ovaj drugi ? I ako definishesh tip "slog" i tip "ljudi" zashto su tu onda dve tachke umesto znaka jednako. Mnogo konfuzno,u najmanju ruku. Inache,tvoj problem,ako pretpostavimo da je sve ostalo sintaxno OK :) bi se mogao reshiti tako shto definishesh tip ljudi kao pointer na tip "covek",isto kao shto se radi u C-u. Ili da napravish neku dinamichku strukturu,npr. listu u koju cesh da stavljash podatke. Inache,bilo kako bilo,niz ti ne mozhe bidi ni blizu neogranichenom jer postoji 64K ogranichenje za Pascalov DATA segment..djubre. Poz,J.J..
pascal.1245 kojai,
Sta da uradim da bih se nakacio na interapt od coma 4, tacnije da se neka moja procedura poziva na svaku promenu na comu... Sa Setintvec se 'kao' zakacim medjutim da bi to radilo kako sam ja zamislio treba da popunim one nazovimo tablice kod portova, koje su objasnjene u interapt listama... Ali ono je nesto oko 20-30 komada ako se ne varam, tako da je provaljivanje duzi posao, ako je nekao uradio neka mi baci na mail... Isa
pascal.1246 vule.,
Koje su komande za obradu gresaka ?
pascal.1247 gkosta,
Molim nekoga da mi odgovori: Zasto mi ne funkcionise u programu klasicno otvaranje fajla sa Assign - Reset? Kada posle Assign stavim Rewrite fajl se otvara, medjutim ne odgovara mi ponistavanje (presnimavanje) fajla. E, da... U prvom slucaju mi ispisuje gresku i prijavljuje da fajl nije nadjen/otvoren! Saljem deo programa. Hvala vam. proba.pas
pascal.1248 kojai, -> #1247, gkosta
>> E, da... U prvom slucaju mi ispisuje gresku i prijavljuje da fajl nije >> nadjen/otvoren! Normalno kad ne postoji fajl... Uradi sledece: f-file of poset a-array[1..n] of poset Assign(f, 'mika.txt'); Rewrite(f); for i:=1 to n do begin Write(f, a[i]); end; Close(f): Kada ucitavas: Assign(f, 'mika.txt'); Reset(f); for i:=1 to n do begin Read(f, a[i]); end; Close(f); Ili ako oces samo jedan element da ocitas npr. 4-ti od 6 elemenata, ides: Seek(f, 4); Write(f, e); e-poset Znaci kada zadajes sta hoces da ocita ne stavljas mu npr. seek(f, pos) vec seek(f, n) gde je: pos-pozicija u bajtovima, n-redni broj reda koji se ocitava. Isa
pascal.1249 qpele, -> #1248, kojai
> Kada ucitavas: > > Assign(f, 'mika.txt'); > Reset(f); > for i:=1 to n do begin > Read(f, a[i]); > end; > Close(f); > Opet ce pucati ako nema fajla "mika.txt". Uradi sledece {$I-} (* ukida kontrolu U/I*) Assign(f, 'mika.txt'); Reset(f); {$I+} (* uvodi kontrolu U/I inace default stanje *) if (IOResult=0) then (* Ako datoteka postoji IResult je 0 u suprotnom je razlicit od 0 *) begin for i:=1 to n do begin Read(f, a[i]); end else rewrite(f); end; Close(f);
pascal.1250 nbjvsb, -> #1248, kojai
>> n-redni broj reda koji se ocitava. Redni broj podatka, redovi u binarnim datotekama ne postoje :-) Nadovezivanje: Ukoliko radiš sa tekstualnom datotekom (f: text), onda ćeš imati malih komplikacija, jer se Seek(f,pos); koristi samo u binarnim datotekama. Koja je razlika između text i file of string? Razlika je u tome što tekstualne datoteke rade sa redovima koji se završavaju sa Eoln (to mu dođe kombinacija karaktera #13 i #10 - #13 označava prelazak na istu poziciju u sledećem redu, a karakter #10 vraća kursor na početak reda), a file of string sa podkanapisa, ondae ta vičina 6 bajtova). Kada imaš podatke određene veličine lako je skakati sa jednog na drugi, dok je kod različitih duđina redova to komplikovanije raditi. Kod tekstualnih datoteka koriste se Read/ReadLn i Write/WriteLn procedure. Da bi mogao da uradiš kakav-takav Seek (koji će sa velikim datotekama raditi sporo), možeš da iskoristiš ovakvu proceduru: procedure SeekText(f: text; Pos: word); var i: word; begin Reset(f); for i:=1 to Pos do ReadLn(f) end; Kolko se sećam, var za datoteke nije neophodan, al' možda i grešim :-) Elem, u gornjem primeru (kao i inače), Seek(f,0); postavlja datotečki pokazivač na prvi red, itd... Preterano sam se raspisao, odo' da se odmorim :-)
pascal.1251 gkosta, -> #1249, qpele
Hvala vam svima. Tek sam sada procitao poruke i cini mi se da je ovo sa IOResult-om najbolje resenje. Javicu sta sam uradio. Hvala jos jednom! :)
pascal.1252 kojai, -> #1250, nbjvsb
>> Redni broj podatka, redovi u binarnim datotekama ne postoje :-) Nisam znao kako da se izrazim... Da pojasnim... Ako je fajl otvoren kao file of slog, gde je slog = Record od necega i ako fajl sadrzi recimo 10 elemenata, 7-om elementu se pristupa sa Seek(f, 7), a ne Seek(f, pos), gde je pos pozicija... Ako je fajl otvoren kao text onda seek ne radi... A ako je otvoren sa file of byte, char, word..., onda ide obicno seek(f, pos)... Ako je otvoren sa file of string[20] onda je moguce uraditi seek(f, 5) npr. da bi se dobio 5 string... >> {$I-} (* ukida kontrolu U/I*) Pa jeste... Ovo izgleda kao pametnije resenje... :) Isa
pascal.1253 voyager,
Pitanje: Imam putanju : '*:\direktorijum\..' * - drajv Kako da na osnovu ove putanje saznam koliko je mesta ostalo na drajvu? VoYaGeR
pascal.1254 kojai, -> #1253, voyager
>> Kako da na osnovu ove putanje saznam koliko je mesta ostalo na >> drajvu? Evo ti nesto primitivno... Recimo da je s: string... Uses Dos; Var s: String; a: Byte; begin s:='C:\UTIL'; If Copy(s,1,1)='A' then a:=1; {Ili uradis sa case CH of} If Copy(s,1,1)='B' then a:=2; {Gde je CH: Char, Copy(S, 1, 1)} If Copy(s,1,1)='C' then a:=3; {Ali za ovako malo nema potrebe} If Copy(s,1,1)='D' then a:=4; If Copy(s,1,1)='E' then a:=5; {...itd.} WriteLn('Na disku je ostalo ', DiskFree(a), ' bajtova.'); end. :)) Ako ti treba za nesto ozbiljnije - nemoj ovako... Isa
pascal.1255 voyager, -> #1254, kojai
>> Ako ti treba za nesto ozbiljnije - nemoj ovako... Ovo sam znao i sam da uradim ali posto mi treba za nesto ozbiljnije bio bi zahvalan ako neko zna malo prostiji nacin :) Ali u svakom slucaju hvala. VoYaGeR
pascal.1256 kojai, -> #1255, voyager
>> Ovo sam znao i sam da uradim ali posto mi treba za nesto ozbiljnije >> bio bi zahvalan ako neko zna malo prostiji nacin :) Ali u svakom Pa da li postoji prostiji nacin od citanja prvog karaktera stringa? Ja nisam rekao da je ovo slozeno, nego da nije previse oziljno... Ali definitivno je najlakse... Isa
pascal.1257 jjerry,
Zadaci sa shkolskog takmichenja iz informatike u MG-u.. 1.zadatak : Dat je niz od N brojeva.Naci najduzi segment koji je palindrom. Segment se sastoji od uzastopnih elemenata polaznog niza. Segment je palindrom akko se isto cita sleva nadesno i zdesna nalevo. Ulazni podaci se nalaze u fajlu : * U prvom redu broj N (N<=2000) * U sledecih N redova po jedan ceo pozitivan broj,manji od 2000000000. Primer ulaznog fajla : 6 1 2 4 3 5 3 Na ekranu treba ispisati : 3 4 2.zadatak : Data je matrica se M vrsta i 2^N kolona.Sve vrste osim prve mogu se ciklichno pomerati udesno (svaki element prelazi u susednu desnu kolonu,osim poslednjeg,koji prelazi u prvu kolonu). Za koliko mesta udesno treba pomeriti svaku vrstu,da bi nakon pomeranja svaka kolona imala isti zbir. Ulazni podaci su u fajlu ZAD2.DAT : * U prvom redu brojevi M i N ; M,N <= 10 * U sledecih M redova po 2^N integera. (-MAXINT-1..MAXINT) Treba ispisati M-1 brojeva,koji oznachavaju pomeraje druge,trece...M-te vrste. Na primer,za fajl : 3 2 1 2 3 4 5 6 7 8 1 3 1 3 na ekranu treba ispisati : 2 1 ili 2 3.Ako nema reshenja,treba ispisati "nema reshenja". ---------------------------- To je to.Btw. kome uspe da napravi takav algoritam koji ce na prosechnom P5 da radi ispod 5 sekundi za RANDOM matricu 10x1024 skidam kapu i dajem mu svoje mesto u MG a ja idem u djubretarsku :) Poz,JJ..
pascal.1258 qpele, -> #1256, kojai
> Ja nisam rekao da je ovo slozeno, nego da nije previse oziljno... Ali > definitivno je najlakse... A i radi posao, sto je najbitnije.
pascal.1259 aandric, -> #1257, jjerry
Sto se tice takmicenja iz informatike. Zadaci u principu nebi bili mnogo teski da stoka koja ih je sastavljala nije po svom obicaju stavljala glupe fazone tipa :"da ti program radi za 3 sekunde sa brojevima vecim od longint..." Inace ja sam drugi uradio backtracking-om za sve brojeve ali sam zbog vremenskih ogranicenja dobio samo 15 poena (shmrc). Sada bih svoj algoritam mogao da unapredim za sve test primere osim onog 10*1024 sa resenjem.Pokazao nam je Dragan Urosevic,koji mi inace predaje C, kako se radi taj zadatak.Covece nista nisam razumeo: neki ciklicni krugovi, pizde materine... BTW, jel zna neko ko ce da ide dalje?Pitao sam Vugdeliju i on mi je u petak rekao da postoje dve mogucnosti u zavisnosti od broja raspolozivih racunara: ili ce proci dalje prvih 30 ili svi koji imaju vise od nula bodova.
pascal.1260 ventura, -> #1259, aandric
> Zadaci u principu nebi bili mnogo teski da stoka koja ih je > sastavljala nije po svom obicaju stavljala glupe fazone tipa > :"da ti program radi za 3 sekunde sa brojevima vecim od > longint..." Nakon listanja raznih enciklopedija, sam skontao da zadatci nisu nesto preterano teski, ali oni debilisto ih sastavljaju ti napisu, isracunaj parafenamonalnodislekcionu matricuopsedjuktivnog broja... jebiga nismo svi iz MG :)
pascal.1261 kojai, -> #1257, jjerry
Cemu ovo sluzi?? Uz to i ne radi... :))
pascal.1262 emajsijuen, -> #1254, kojai
>> s:='C:\UTIL'; >> If Copy(s,1,1)='A' then a:=1; {Ili uradis sa case CH of} >> If Copy(s,1,1)='B' then a:=2; {Gde je CH: Char, Copy(S, 1, 1)} >> If Copy(s,1,1)='C' then a:=3; {Ali za ovako malo nema potrebe} A:=Ord(S[1])-64;
pascal.1263 kojai, -> #1262, emajsijuen
>> A:=Ord(S[1])-64; Ne moze Ord od stringa... Ali lepa zamisao... :) Isa
pascal.1264 nbjvsb, -> #1263, kojai
>> >> A:=Ord(S[1])-64; >> ^^^^ >> Ne moze Ord od stringa... Ali lepa zamisao... :) Pogledaj malo bolje ovo gore. Ne piše samo S, već S[1]. S[poz] vraća _karakter_ (znači char) koji se nalazi na poziciji poz u stringu, pri čemu S[0] predstavlja karakter dužine - Ord(S[0]) će ti reći koliko je string dugačak. Isto kao i Length(S).
pascal.1265 kojai, -> #1264, nbjvsb
Da... Moja greska... :)
pascal.1266 jjerry, -> #1259, aandric
>> Inace ja sam drugi uradio backtracking-om za sve brojeve ali >>sam zbog vremenskih ogranicenja dobio samo 15 poena (shmrc). Ma znam,ja sam ga isto uradio backtracking-om,al' sam dobio samo 6 poena. Fazon : prolaskom sa Trace Into se ispisuju tachna reshenja, i u strukturu se ista upisuju savrsheno. Sa Ctrl-F9 se ispisuju 0 ?! Reche mi Vugdelija da je to,kao,99% programerska greshka i da verovatno program dira neku memoriju koju ne bi smeo,kao npr. pichi van matrice ili slichno,ali takvih stvari kod mene nema..rebus.. >>osim onog 10*1024 sa resenjem.Pokazao nam je Dragan >>Urosevic,koji mi inace predaje C, kako se radi taj Blago tebi,blago meni...Meni inache sad predaje Jasminka ;)))) tako da si mi ulepshao dan saznanjem da mi ona u trecoj nece predavati ;) >>od broja raspolozivih racunara: ili ce proci dalje prvih 30 >>ili svi koji imaju vise od nula bodova. Napisali su u shkoli...Praktichno ,30 onih koji odu na gradsko odlaze i na republichko,jer 30 i pushtaju. Razlog : proferore mrzi da sede 8 sati..Barabe.. Pozdrav,JJ..
pascal.1267 jjerry, -> #1260, ventura
>> Nakon listanja raznih enciklopedija, sam skontao da zadatci nisu Shto si listao enciklopedije ? Btw. ipak mislim da su vremenska ogranichenja pozitivna stvar. Prvo,onaj ko pregleda nije blesav da sedi 10h za kompjuterom chekajuci reshenje,a drugo,da nema ogranichenja,genijalan algoritam i najprizemniji peshachki algoritam ce biti isto ocenjeni,zar ne ? Pozdrav,JJ..
pascal.1268 nbjvsb, -> #1252, kojai
Izvinjavam se što tek sad odgovaram, ali grešom sam sve poruke u Pascalu označio kao pročitane :-( >> Ako je fajl otvoren kao file of slog, gde je slog = Record od necega i ako >> fajl sadrzi recimo 10 elemenata, 7-om elementu se pristupa sa Seek(f, 7), >> a ne Seek(f, pos), gde je pos pozicija... Koja je razlika između Seek(f,7) i Seek(f,pos), gde je pos pozicija, majke ti? Naravno, pod pos mislim na redni broj podatka, a ne na bajt u datoteci. BTW. 7-om elementu pristupa se sa Seek(f,6). Kao što rekoh, Seek(f,0) vraća prvi element u datoteci, itd.
pascal.1269 kojai, -> #1268, nbjvsb
>> Koja je razlika izmedu Seek(f,7) i Seek(f,pos), gde je pos pozicija, majke >> ti? Naravno, pod pos mislim na redni broj podatka, a ne na bajt u datoteci. A sta sam ja rekao?! Nema razlike izmedju seek(f,7) i seek(f,pos) ali ja sam pricao o dve razlicite stvari... Prvo o fajlu otvorenom sa file of rec, a potom o fajlu otvorenom sa file of byte... Samo sam uporedio... Mozda sam pogresio u kuckanju... :) Isa
pascal.1270 nbjvsb, -> #1269, kojai
>> A sta sam ja rekao?! Pa rekao si da se sa file of slog elemntu pristupa sa Seek(f,7) a ne sa Seek(f,pos). Cijenim da se nismo razumeli. Mislim da si pod pos podrazumevao poziciju u bajtovima, a ja poziciju elementa, iliti sloga, u fajlu :-)
pascal.1271 jjerry,
Otjete zadatke sa gradskog u MG ? Btw. da li neko na sluchajno,da li su zadaci za sve shkole isti,ili kao na matematici ,ono,mi smo A kategorija,ostali su B itd. ? Poz,JJ..
pascal.1272 nbjvsb, -> #1271, jjerry
>> Otjete zadatke sa gradskog u MG ? Btw. da li neko na sluchajno,da >> li su zadaci za sve shkole isti,ili kao na matematici ,ono,mi smo A >> kategorija,ostali su B itd. ? U informatici, gradsko je uvek bilo isto za sve. Jedino je školsko bilo deljeno na jače i slabije. :-) Inače, šalji zadatke. Ko ih uopšte sada pravi?
pascal.1275 sqweaky,
Senzacionalno! :) ******************************** ** Sors Dos Navigatora v1.51! ** ******************************** Skinite obavezno. :) Predlazem javno unapredjivanje DN-a. Recite sta bi trebalo dodati, promeniti. Meni je ovo prvo palo na pamet: 1) Podrska za LFN 2) Izbaciti registraciju O:) 3) Windows verzija 4) Meniji na srpskom 5) Vise asemblera, manje paskala :) 6) ... p.s. Za kompajliranje su vam potrebni Tasm, Tlink i Borland Paskal 7.0. dn151src.zip
pascal.1276 kojai, -> #1275, sqweaky
>> Senzacionalno! :) Bilo bi da si poslao pre 5 godina... Kome danas treba bilo koji dos source? Neisplativo, nazalost... :( Isa
pascal.1277 pavijan, -> #1275, sqweaky
> Senzacionalno! :) > > ******************************** > ** Sors Dos Navigatora v1.51! ** > ******************************** > Predlazem javno unapredjivanje DN-a. Recite sta bi trebalo > dodati, promeniti. Meni je ovo prvo palo na pamet: > > 1) Podrska za LFN > 2) Izbaciti registraciju O:) > 3) Windows verzija > 4) Meniji na srpskom > 5) Vise asemblera, manje paskala :) > 6) ... ______________________________ Predlozi: 1) Pozdrska za LNF 2) Brisanje u Recycle Bin 3) Unaprediti Terminal (recimo sa Mini Host-om) 4) Unaprediti CD Player za MP3, MOD i sl. 5) Vise assemblera svakako. 6) Unaprediti System Information. 7) Pojacati Help. 8) Ostati u okviru 1.44 Mb instalacija. 9) Izbor za vise jezika. 10) Meni vise netreba :))))))))))) Ako se ovo postigne Windows verzija uopste nije neophodna. Registraciju zadrzati. Pozdrav od pavijana. :))))))))
pascal.1278 pavijan, -> #1276, kojai
> Bilo bi da si poslao pre 5 godina... Kome danas treba bilo koji dos source? ______________________________ Ovaaj.. grdno ovaaj.. grdno gresis sinak.. :))))) Bez uvrede ali DN se danas trosi nesmanjenom zestinom i stoji po upotrebi rame uz rame sa Windovs Commander-om i Windows Explorerom a kad bi se unapredio garant bi potisnuo rivale. Posto je izasao source predpostavljam da ce sledeca verzija Windows Commanreda (koja inace dosta kasni) biti dogradjena tako da ce izgledati kao Windows verzija DN-a. Win Navigator je lep pokusaj ali je jos nedoradjen i vise podseca na NC nego na DN. Pozdrav od pavijana dosofilima - vrsti koja izumire. :)))))))
pascal.1280 kojai, -> #1278, pavijan
>> Pozdrav od pavijana dosofilima - vrsti koja izumire. :))))))) Upravo to... :( Isa
pascal.1281 stemil, -> #1278, pavijan
> Bez uvrede ali DN se danas trosi nesmanjenom zestinom i stoji po upotrebi > rame uz rame sa Windovs Commander-om i Windows Explorerom a kad bi se > unapredio The Best Shell In The World ! Still...Forever !!!
pascal.1282 stameni,
Uz poruku ide, kazu, najbolji generator slucajnih brojeva, koga je neko vec ranije kacio ovde. Algoritam je raden u Fortranu, pa je posle prebacen u C, i u takvom obliku ga ja ponavljam. Potreban je program u Pascalu, pa ako je neko u prilici da prebaci, ne bilo mu tesko... P. S. Radim bez tvrdog diska, tako da nema sanse da pokrenem kompajler, pa zato molim. best_rnd.c
pascal.1283 kojai,
Imam jedno pitanje... Sa jednog kompa saljem podatke preko porta $2F8 (COM 2), a na drugom ocitavam taj port... Zanima me kako da saopstim da sam procitao podatak i da cekam do sledeceg. Pokusao sam sa Delay-om(pauzom) ali to se tako ne radi posto ponekad se preskoci i neprocitani... Pokusao sam knjisku varijantu sa SetIntVec i GetIntVec ali to mi ne radi. Pokusao sam sa interaptom 14h, ah=1 recive from com port, ali to mi presporo ide(odnosno ne ide)... Kako ovo da sredim, odnosno kako da ocitavam lepo sa COM-a 2?
pascal.1284 jjerry,
Da li neko zna tachnu formulu za prevodjenje boje iz hue,saturation, luminocity (intensity,kod nekih autora) vrednosti u RGB vrednosti. Analizom vrednosti u chuvenom 'Custom color' prozoru windowsa sam napravio proceduru koja daje tachan prevod (jedini uochljivi bag je shto ponekad vrednosti zbog round-ovanja budu 1 manje/vece od tachnih) ali sam u nekim drugim kodovima video drugachiju formulu : R = [ 64*I/2 * (1 + S * sin(H - 2*Pi/3))] G = [ 64*I/2 * (1 + S * sin(H))] B = [ 64*I/2 * (1 + S * sin(H + 2*Pi/3))] R,G,B,H,S,I <=> Red,Green,Blue,Hue,Saturation,Intesity (Luminocity) [x] = trunc(x) itd. , koja ne daje tachne rezultate za Windows ;) 'Custom color' prozor. Poz,JJ..
pascal.1285 kiklop, -> #1284, jjerry
> Da li neko zna tachnu formulu za prevodjenje boje iz hue,saturation, > luminocity (intensity,kod nekih autora) vrednosti u RGB vrednosti. Pa evo ti ceo članak iz MS-ove baze znanja koji se bavi pitanjem: PSS ID Number: Q29240 Article last modified on 11-02-1995 PSS database name: WIN32SDK 3.00 3.10 4.00 | 3.50 3.51 WINDOWS | WINDOWS NT ------------------------------------------------------------------------- The information in this article applies to: - Microsoft Windows Software Development Kit (SDK) for Windows versions 3.1 and 3.0 - Microsoft Win32 Application Programming Interface (API) included with: - Microsoft Windows NT versions 3.5 and 3.51 - Microsoft Windows 95 version 4.0 ------------------------------------------------------------------------- SUMMARY ======= The code fragment below converts colors between RGB (Red, Green, Blue) and HLS/HBS (Hue, Lightness, Saturation/Hue, Brightness, Saturation). MORE INFORMATION ================ /* Color Conversion Routines -- RGBtoHLS() takes a DWORD RGB value, translates it to HLS, and stores the results in the global vars H, L, and S. HLStoRGB takes the current values of H, L, and S and returns the equivalent value in an RGB DWORD. The vars H, L, and S are only written to by: 1. RGBtoHLS (initialization) 2. The scroll bar handlers A point of reference for the algorithms is Foley and Van Dam, "Fundamentals of Interactive Computer Graphics," Pages 618-19. Their algorithm is in floating point. CHART implements a less general (hardwired ranges) integral algorithm. There are potential round-off errors throughout this sample. ((0.5 + x)/y) without floating point is phrased ((x + (y/2))/y), yielding a very small round-off error. This makes many of the following divisions look strange. */ #define HLSMAX RANGE /* H,L, and S vary over 0-HLSMAX */ #define RGBMAX 255 /* R,G, and B vary over 0-RGBMAX */ /* HLSMAX BEST IF DIVISIBLE BY 6 */ /* RGBMAX, HLSMAX must each fit in a byte. */ /* Hue is undefined if Saturation is 0 (grey-scale) */ /* This value determines where the Hue scrollbar is */ /* initially set for achromatic colors */ #define UNDEFINED (HLSMAX*2/3) void RGBtoHLS(lRGBColor) DWORD lRGBColor; { WORD R,G,B; /* input RGB values */ BYTE cMax,cMin; /* max and min RGB values */ WORD Rdelta,Gdelta,Bdelta; /* intermediate value: % of spread from max */ /* get R, G, and B out of DWORD */ R = GetRValue(lRGBColor); G = GetGValue(lRGBColor); B = GetBValue(lRGBColor); /* calculate lightness */ cMax = max( max(R,G), B); cMin = min( min(R,G), B); L = ( ((cMax+cMin)*HLSMAX) + RGBMAX )/(2*RGBMAX); if (cMax == cMin) { /* r=g=b --> achromatic case */ S = 0; /* saturation */ H = UNDEFINED; /* hue */ } else { /* chromatic case */ /* saturation */ if (L <= (HLSMAX/2)) S = ( ((cMax-cMin)*HLSMAX) + ((cMax+cMin)/2) ) / (cMax+cMin); else S = ( ((cMax-cMin)*HLSMAX) + ((2*RGBMAX-cMax-cMin)/2) ) / (2*RGBMAX-cMax-cMin); /* hue */ Rdelta = ( ((cMax-R)*(HLSMAX/6)) + ((cMax-cMin)/2) ) / (cMax-cMin); Gdelta = ( ((cMax-G)*(HLSMAX/6)) + ((cMax-cMin)/2) ) / (cMax-cMin); Bdelta = ( ((cMax-B)*(HLSMAX/6)) + ((cMax-cMin)/2) ) / (cMax-cMin); if (R == cMax) H = Bdelta - Gdelta; else if (G == cMax) H = (HLSMAX/3) + Rdelta - Bdelta; else /* B == cMax */ H = ((2*HLSMAX)/3) + Gdelta - Rdelta; if (H < 0) H += HLSMAX; if (H > HLSMAX) H -= HLSMAX; } } /* utility routine for HLStoRGB */ WORD HueToRGB(n1,n2,hue) WORD n1; WORD n2; WORD hue; { /* range check: note values passed add/subtract thirds of range */ if (hue < 0) hue += HLSMAX; if (hue > HLSMAX) hue -= HLSMAX; /* return r,g, or b value from this tridrant */ if (hue < (HLSMAX/6)) return ( n1 + (((n2-n1)*hue+(HLSMAX/12))/(HLSMAX/6)) ); if (hue < (HLSMAX/2)) return ( n2 ); if (hue < ((HLSMAX*2)/3)) return ( n1 + (((n2-n1)*(((HLSMAX*2)/3)-hue)+(HLSMAX/12))/(HLSMAX/6)) ); else return ( n1 ); } DWORD HLStoRGB(hue,lum,sat) WORD hue; WORD lum; WORD sat; { WORD R,G,B; /* RGB component values */ WORD Magic1,Magic2; /* calculated magic numbers (really!) */ if (sat == 0) { /* achromatic case */ R=G=B=(lum*RGBMAX)/HLSMAX; if (hue != UNDEFINED) { /* ERROR */ } } else { /* chromatic case */ /* set up magic numbers */ if (lum <= (HLSMAX/2)) Magic2 = (lum*(HLSMAX + sat) + (HLSMAX/2))/HLSMAX; else Magic2 = lum + sat - ((lum*sat) + (HLSMAX/2))/HLSMAX; Magic1 = 2*lum-Magic2; /* get RGB, change units from HLSMAX to RGBMAX */ R = (HueToRGB(Magic1,Magic2,hue+(HLSMAX/3))*RGBMAX + (HLSMAX/2))/HLSMAX; G = (HueToRGB(Magic1,Magic2,hue)*RGBMAX + (HLSMAX/2)) / HLSMAX; B = (HueToRGB(Magic1,Magic2,hue-(HLSMAX/3))*RGBMAX + (HLSMAX/2))/HLSMAX; } return(RGB(R,G,B)); } Additional reference words: 3.00 3.10 3.50 4.00 95 color RGB HLS HBS KBCategory: kbgraphic KBSubcategory: GdiPal ============================================================================= Copyright Microsoft Corporation 1995. Nadam se da ti je ovo pomoglo.
pascal.1286 zdravkod, -> #1285, kiklop
Gde moze da se nabavi MS SDK. Da li se dobija (kompletan) uz Delphi ili C++ Builder? Zdravko
pascal.1287 kiklop, -> #1286, zdravkod
> Gde moze da se nabavi MS SDK. Da li se dobija (kompletan) uz Delphi > ili C++ Builder? > > Zdravko Uz Delphi 3.0/4.0 i C++ Builder 1.0/3.0/4.0 se dobijaju hlp fajlovi koji uglavnom predstavljaju dokumentaciju za win32 SDK. S time da to nije sve, nije najsvežije i najtačnije. Uz sve to je jako poželjno da nabaviš MSDN (Microsoft Developers Network) koji se isporučuje uz MS VC++. Najbolje je da kupiš ovaj uz VC++ 6.0, pošto je najsvežiji. u njemu je kompletan win32 SDK, knowledge base za sve MS proizvode, bugovi, primeri itd... Inače ide na dva CD-a i zahteva postojanje Internet Explorera 4.0 i podrške za HTML help (win98).
pascal.1288 goxi,
Da li je nekako moguce citati _znak po znak_ iz fajla (i upisivati u drugi) ? Znaci vazno je da se cita znak po znak a ne red po red. Goran.
pascal.1289 emajsijuen, -> #1288, goxi
EM>> Da li je nekako moguce citati _znak po znak_ iz fajla (i upisivati EM>> u drugi) ? Naravno da jeste. Izvodljivo je na vise nacina. Evo ti nesto iz glave, valjda nisam nigde pogresio. Uses DOS; Var FIn :File Of Char; Znak :Char; Begin Assign(FIn, ParamStr(1)); Reset(FIn); While Not EOF(FIn) Do Begin Read(FIn, Znak); Writeln('Znak br. ', FilePos(FIn), ' iz fajla je: "'+Znak+'"); End; Close(FIn); End.
pascal.1290 jjerry,
Opis par provereno najboljih (najbrzhih) sortova..ako mozhe ? :) Na takmichenjima sam uglavnom koristio Heap,pa bih chisto da znam da li ima neshto brzhe,bez najgoreg sluchaja itd. Poz,JJ..
pascal.1291 ventura,
Ortaku trebaju za sutra ovi zadati, pa ako neko zna ovo neka sibne na mail.. P.S. Ovo treba da se resi tak sto ce se program razlediiti na funkcije (function program(x,x:real):real)... 1. Napisati potprogram funkcije cij ulazni podatak je velicina X a izlaz predstavlja Y gde je Y=f(x) funkcija data izrazom: {x^2 - 4x + 4, -2<x<2 Y = f(x) = {x^2 - 4x - 4, -2<=x<+beskonacno {x^2 + 4x + 4. -beskonacno<x<=-2 u glavnom programu predvideti unos 3 ulazna podatka XP, XK i DX gde XP predstavlja pocetnu vrednost, XK kraqjnju vrednos a DX korak promene promenjljive X. Nakon unosa izvrsiti proveru odnosno uskladjivanje ulaznih podataka, pozivati podprogram tako da se X menja od pocetne XP do krajnje XK vrednosti u odgovarajucem koraku DX, te ispisati tabelarno izracunate vrednosti u parovima (X,Y) za svaku tacku iz predvidjenog opsega promene. 2. Napisati podprogram cij je ulaz ceo broj N i jednocifreni broj B, a izlaz broj pojavljivanja jednocifrenog broja (cifre) B u broju N. Napiasti glavni program u kome se vrsi ucitavanje celog broja N, kao jednocifrenog broja B, provera dali N pripada opsegu -32768<=N<=32767, a B opsegu 0<=B<=9, pozivanje podprograma, kao i ispis rezultata. U glavnom programu predvideti ponovlkjeni pokusaj ako se unese broj N ili B izvan predvidjenog opsega. 10x.
pascal.1292 obren, -> #1290, jjerry
> Opis par provereno najboljih (najbrzhih) sortova..ako mozhe ? :) > Na takmichenjima sam uglavnom koristio Heap,pa bih chisto da znam > da li ima neshto brzhe,bez najgoreg sluchaja itd. Za najbrži algoritam opšte namene i dalje važi Quick Sort, a jedna od implementacija (rekurzivna) ti je okačena uz poruku U pitanju je primer koji dolazi uz Turbo Pascal "od pamtiveka". qsort.pas
pascal.1293 jjerry, -> #1292, obren
>> Za najbrzi algoritam opste namene i dalje vazi Quick Sort, a >> jedna od implementacija (rekurzivna) ti je okacena uz poruku >> U pitanju je primer koji dolazi uz Turbo Pascal "od pamtiveka". Znam za Quick,naravno,ali mi se Heap vishe svidjao prosto iz razloga shto je malo sporiji od QuickSort-a,a nema najgori sluchaj (konkretno za Quick kad je niz vec sortiran). Poz,JJ..
pascal.1294 stameni,
Pre nego što pokrenete ovaj program, pokušajte da pogodite koliko racionalnih brojeva on štampa. ----<cut>---- program bug; var x: real; begin x := 1; writeln; while(x <= 2) do begin writeln(x); x := x + 0.1 end end. ----<cut>---- Površnom analizom pretpostavlja se da treba da odštampa 11 racionalnih brojeva: 1.0, 1.1, 1.2, ..., 2.0. Ipak, za Turbo Pascal 6.0 važi i psi faktor, po kome će program da štampa samo 10 brojeva: 2.0 biće izostavljen. Uz poruku je prikačena izvršna verzija programa, kompajlirana verzijom 6.0; može li neko da proveri nekim drugim verzijama, možda je bug ispravljen? Bug se sastoji u poređenju racionalnih brojeva, gde je (bivši) Borland napravio manji propust: zbog jednog greškom resetovanog zero flaga dolazi se do smešne situacije da je 2.0 veće od 2.0, što je uslov za izlazak iz petlje -- videti program. U TP6BUGS samo je napomenuto da problem postoji kod real aritmetike, ali nisu precizno utvrđeni slučajevi kad program ne radi. tp6bug.exe
pascal.1295 emajsijuen, -> #1294, stameni
EM>> Bug se sastoji u poredenju racionalnih brojeva, gde je (bivsi) EM>> Borland napravio manji propust: zbog jednog greskom resetovanog EM>> zero flaga dolazi se do smesne situacije da je 2.0 vece od 2.0, EM>> sto je uslov za izlazak iz petlje -- videti program. U TP6BUGS EM>> samo je napomenuto da problem postoji kod real aritmetike, ali EM>> nisu precizno utvrdeni slucajevi kad program ne radi. Ja sam imao slican problem sa Delphi-jem cak je takvo sranje pravila i verzija 4 (koju trenutno imam). Problem sam resio na prilicno debilan nacin: konverzijom iz realnog broja u string (sa zaokruzivanjem na 3 decimale), pa ponovnom konverzijom u real broj. Problem je u stvari bio malko drugaciji, ali je greska ista: dva poziva jedne funkcije (naravno sa istim parametrima) vracala su dva realna broja koji su (gledano iz Delphija) imali istu vrednost. Medjutim kada se te dve vrednosti oduzmu, dobija se neki treci real broj koji je manji od nule, i ispostavlja se da su se brojevi razlikovali u nekoj decimali.
pascal.1296 stameni, -> #1295, emajsijuen
>> Ja sam imao slican problem sa Delphi-jem cak je takvo sranje pravila i >> verzija 4 (koju trenutno imam). Maločas napisah isto u C-u za TC++ 1.0 i BC++ 3.1, i, šta mislite, da li ima greške? Naravno da ima :) Očigledno u (bivšem) Borlandu koriste isti kod za rad sa racionalnim brojevima godinama -- samo zamene "ono okolo" a "srž" ne diraju :) Eeee... :)
pascal.1297 stameni, -> #1296, stameni
>> Maločas napisah isto u C-u za TC++ 1.0 i BC++ 3.1, i, >> šta mislite, da li ima greške? Naravno da ima :) Upravo sam kompajlirao program Turbo Pascalom 2.0, pod CP/M, i, kao što se moglo očekivati, nema buga :) Program kako treba izbaci svih jedanaest vrednosti. Kod koda za Z80, dakle, nije bilo problema.