1. |
Re: Cipper KEYBOARD C-ben (mind) |
33 sor |
(cikkei) |
2. |
Re: Karakterfelismeres (mind) |
40 sor |
(cikkei) |
3. |
=?iso-8859-1?Q?Re:_Tartalmazas?= (mind) |
21 sor |
(cikkei) |
4. |
Re: Cipper KEYBOARD C-ben (mind) |
15 sor |
(cikkei) |
5. |
Re: *** HIX CODER *** #78 (mind) |
6 sor |
(cikkei) |
6. |
Re: Tartalmazas (mind) |
26 sor |
(cikkei) |
7. |
re: pont tartalmazas (mind) |
25 sor |
(cikkei) |
8. |
MemCopy (xxmc.zip) program WEB publikalas (mind) |
19 sor |
(cikkei) |
9. |
Mintaillesztes (mind) |
18 sor |
(cikkei) |
10. |
Re: Cipper KEYBOARD C-ben (mind) |
78 sor |
(cikkei) |
11. |
Re: korbejaro planetas (mind) |
30 sor |
(cikkei) |
12. |
Re: Varakozas (mind) |
69 sor |
(cikkei) |
|
+ - | Re: Cipper KEYBOARD C-ben (mind) |
VÁLASZ |
Feladó: (cikkei)
|
> Felado : [Hungary]
> Temakor: Cipper KEYBOARD C-ben ( 58 sor )
> Idopont: Thu Apr 16 09:36:41 EDT 1998 CODER #80
> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> A kerdes a kovetkezo:
> Nem e lehetne e, ezt a kis eljarast egyszerubben megoldani?
> Ami egyebkent muxik es nallam nem akadt ossze semmivel.
Szia!
Nem teljesen vilagos, hogy ha mukodik, akkor miert kellene megvaltoztat-
ni; valami bajod csak van vele... Ha nem is ismered a C-t, az a megjegy-
zesekbol latszik, hogy minden sornak funkcioja van... :-)
Masfelol hogyan akarod lecserelni?
Kulonben csak addig nem akad ossze semmivel, amig mondjuk nem probalod
NT-n futtatni, mivel a memoriahoz vedett modban mar nem lehet "csak ugy"
hozzaferni. Javaslom, hogy ilyen trukkoket ne hasznalj, barmennyire is
megszokott a Clipperben.
Kesziteni lehetne egy sajat rutint, amit mindig az eddig megszokott
karakter-beolvaso rutin helyett kellene hasznalni (Inkey(), ha jol em-
lekszem), ennek sajat puffere lehetne, amit egy masik rutinnal lehetne
toltogetni, amikor szukseges.
A Clipper 5-ben mar te is osszeallithatod a fontosabb objektumokat (pl.
sajat Get osztaly) es megoldhato bennuk valamennyire a sajat billentyu-
zet-beolvaso rutin hasznalata, de nem tudom, ki lehet-e _mindent_ cse-
relni (pl. SetKey() ?).
Regen volt, talan igaz sem volt... :-)
--
Tibor
|
+ - | Re: Karakterfelismeres (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Sziasztok!
Istvan feladataira a megoldasok (szerintem):
+4 ha az alakzat kulso korvonalat jarjuk be (1. eset),
-4 ha az alakzaton belul egy lyukat (2. eset).
Felteszem, hogy indulasnal a vektor felfele mutat (legutobb
ebben allapodtunk meg ugye). Hogy miert ennyi, arrol mar irtam
egyszer. Azert van, mert amig visszaerunk a kiindulasi helyzetbe
pontosan egyszer fordul korbe a vektor.
Szinbadnak: ha konvex az alakzat (mundjuk ez pixeles alakzanal
csak a teglalapra, negyzetre igaz), akkor csak egy iranyban
fordulunk; ha konkav, akkor ide-is, oda-is, de a "belso"
csucsoknal az ellenkezo iranyu fordulas mindig "kiejt" egy sima
fordulast, igy a vegeredmeny ugyanaz (vagyis egy teljes fordulat).
A lyuknal azert -4 az eredmeny, mert az elkereses a lyuk hatso
szelenel all meg, igy a korbejaras az oramutatoval ellentetesen
halad.
3-4. eset: Egy megjegyzesem lenne mielott az erredmenyt kozolnem.
A korbejaras szabalyainak leirasanal nem derult ki vilagosan,
hogy amikor fordulunk, akkor a vektor a helyen marad-e, vagy nem
(mivel BIZTOS, hogy a fordulas utan az adott iranyban legalabb
1-et kell elore is lepni, nem mindegy), illetve ha ott marad,
akkor az uj iranyba allva is el kell-e vegezni a vizsgalatot es
szamolast, vagy csak a kovetkezo lepes utan. En megneztem mind a
ket esetet, es nekem a 2. a szimpatikusabb, mivel igy kaptam
olyan erteket, amit ertelmezni tudok. Ebben az esetben a kapott
ertek a korbejart alakzaton beluli pontok szamat vagyis teruletet
adja. Pozitiv ha az oramutato jarasaval egyezo iranyban (tehat
kulso korvonalon), negativ ha ellenkezo iranyban (tehat lyukon)
haladunk korbe. Vegig gondoltam a dolgot, le is tudnam vezetni
hogy miert, de mar igy is sokat irtam. Most nem farasztalak
vele titeket. Ha kell majd azt is megszulom.
Udv!
Emze
---
MailTo:
|
+ - | =?iso-8859-1?Q?Re:_Tartalmazas?= (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Feladat: eldonteni a sikon egy x,y pontrol, hogy az a,b,c,d pontok
konvex burkanak belso pontja-e.
Nem algoritmus, de kezdetnek remelem jo.
I. Négy pont ket kulonbozo negyszoget alkot, ezert celszeru ket
haromszogre, az abc-re es a bcd -re bontani es a tartalmazast azokra
vizsgalni. Egy pont akkor van egy haromszog belsejeben, ha mindharom e'l
"jobb" oldalan helyezkedik el. Az e'l egyenletebe helyettesitve a pont
koodinatait: Ax+By+C =0, >0 vagy <0 a szerint, hogy az (x,y) pont az
egyenesre illeszkedik vagy az egyenes "bal" vagy "jobb" oldalara esik
(az egyenes normalvektorának (A,B) iranyaba, vagy azzal ellentetes
oldalra).
II. Egy pont akkor belso pontja egy poligonnak, ha egy a pontbol
kiindulo felegyenes a poligon oldalait paratlan szamuszor metszi. A
csucson atmeno felegyenes egy metszespontnak szamit.
Gondold át, mert nem vagyok biztos benne, hogy jol irtam :)
z2
|
+ - | Re: Cipper KEYBOARD C-ben (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Szia!
Szerintem ezt egy kicsit egyszerubben is meg lehetne csinalni, ugyanis van
a C-ben egy ilyen fv, ami pont erre valo.
#include <conio.h>
int ungetch(int ch);
Ha EOF -ot ad vissza, akkor valami hiba volt. Egyebkent a ch-t beleteszi a
bill.pufferbe.
Udv
Csaba
|
+ - | Re: *** HIX CODER *** #78 (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hogy lehet egy voice-os modemet programozni C-ben vagy Pascal-ban, hogy egy
voice-menu-s rendszert lehessen letrehozni, de fax, illetve adat-atvitelt
is lehessen
megoldani?
>
|
+ - | Re: Tartalmazas (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Sziasztok!
> =======================================================
> Felado : [Belgium]
> Temakor: Tartalmazas ( 14 sor )
> Idopont: Thu Apr 16 03:21:46 EDT 1998 CODER #80
> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> kerdes. Szoval... Adott 4 pont egy sikon kordinataikkal. Ez a negy pot
> termeszetesen egy negyszoget hataroz meg. Hogyan tudom eldonteni a sik egy
> otodik pontjarol, hogy az eleme-e a negy pont altal meghatarozott
> sikidomnak vagy sem? Valami olyan megoldas kellene, ami konnyen
1)
Huzol egy egyenes, ami atmegy az otodik ponton es metszi valahol a
negyszoget is.
2)
A negyszog oldalai szakaszokra bontottak az egyenest.
3)
Meg kell keresni, hogy az otodik pont az egyenes melyik szakaszban
van. Az negyszogon kivul kell elkezdeni a szamolast.
Minden paratlan es paros metszespont kozott bent vagy a negyszogbe.
Minden paros es paratlan metszespont kozott kint vagy a negyszogbol.
Pisti
p.s.: Ez nem csak negyszogre mukodik, hanem barmilyen sikidomra.
(szerintem)
|
+ - | re: pont tartalmazas (mind) |
VÁLASZ |
Feladó: (cikkei)
|
kerdezte
>Adott 4 pont egy sikon kordinataikkal. Ez a negy pot
>termeszetesen egy negyszoget hataroz meg. Hogyan tudom eldonteni a sik egy
>otodik pontjarol, hogy az eleme-e a negy pont altal meghatarozott
>sikidomnak vagy sem?
Ehhez az kell, hogy tudjam a negyszog koruljarasi iranyat, azaz, hogy milyen so
rrendben jonnek egymasutan
a pontok. Legyen a negyszog negy oldalegyenese n1,n2,n3,n4 es az otodik pont P
0.
Huzok egy E felegyenest P0 -bol valamilyen iranyba (mondjuk vizszintesen jobbra
)
Veszem E-nek n1,n2,n3,n4-gyel valo metszespontjai kozul azokat, amelyek belul v
annak a negyszog oldalain.
Ha ezek paratlan sokan vannak, akkor a P0 belul van , ha paros sokan vannak, (a
0 is paros szam :-) ) akkor kivul.
Ha a metszespontok kozul valamelyik egyenlo P0-lal (es belul van az oldalon) ak
kor P0 a hataron van.
Remelem erthetoen fogalmaztam, ha nem, akkor irj, es maganban kuldok rola rajzo
t...
Szabó Zsolt Mihály
|
+ - | MemCopy (xxmc.zip) program WEB publikalas (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hi Coders!
A CODER#80 megjelent progim bovitett forraskodjat a
http://neutron.szfki.kfki.hu/dice/letoltes.htm
cimen lehet elerni.
Kiegeszitenem a programot azzal, hogy:
A PentiumPro optimalizalast termeszetesen 32biten lehet a
legjobban kihasznalni. Az eredetiben is (si, di, cx helyett
esi, edi, ecx, stb.) igy szerepelt az eredetiben is csak en
irtam at 16bitesre. Tehat PPro eseten inkabb 32bitesre csinaljatok.
Ha hujjesegeket irogatok akko bocsika :)
udv: XiX
-=- -=-
-=- Minden masodik szavam hazugsag -=-
-=- Az orokevalosagnak kell elni. Na bumm, legfeljebb nem sikerul -=-
|
+ - | Mintaillesztes (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Hali, Coderek!
Egy kis segitsegre lenne szuksegem, megpedig a kovetkezore:
A Do:mo:lki fele mintailleszto algoritmus leirasa kellene. Ezt ugyan
elmondtak programozas gyakszin, dehat az ember ugye nem mindig figyel. :)
Utana meg rohangalhat a hianyzo anyag utan. :(
Ha valaki ismerne ezt az algoritmust, kerem segitsen.
A cim: , de mehet a listara is a valasz.
Elore is koszonom mindenkinek a faradozasat.
Pisti
U.i.:
Esetleg a Knuth-Morris-Pratt mintaillesztest is leirhatja valaki, bar ezt
valoszinuleg ki tudom bogaraszni.
|
+ - | Re: Cipper KEYBOARD C-ben (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 16 Apr 98 at 9:36, > wrote:
> Aki ismeri a Clipper KEYBOARD nevu rutinjat
> es meg a C-t is az elemezze ki az alabbi C rutint
> ami a Clipper KEYBOARD rutinjat hivatott megvalositani!
A billentyuzet leutesek 2 byte-os kodjait (ascii kod es scan kod) egy
gyurupufferben tarolja a dos, ami puffer a 0x40-es szegmensben a 0x1E
cimen kezdodik, es 16 leutesnyi hely van benne (32 byte). Elvileg a
puffer lehet mashol is (gyakorlatilag nem tudom, hogy atteszi-e
valaki, nem hiszem) ezert a 0x40:0x80-as cimen van egy near pointer,
ami a kezdetere mutat a 0x40-es szegmensben!!! (Ezert nem hiszem,
hogy atteszi valaki mashova) Van pointer a vegehez is (40:82), szoval
elvileg a merete is lehet tobb vagy kevesebb 16 leutesnel. Ez a
program egyiket sem figyeli, szoval mindig a default hellyel
dolgozik.
A gyurupuffert ket near pointer valositja meg, ezek (a 40-es
szegmensben szinten) a 0x1A (head) es 0x1C (tail) cimeken vannak.
Amikor head==tail, akkor ures a puffer. A dos head-rol olvas, az
interruptkor meg tail-re ir.
> A kerdes a kovetkezo:
> Nem e lehetne e, ezt a kis eljarast egyszerubben megoldani?
(Ha ASM-ben lenne irva, egyszerubb lenne :))
Az 'olvasok' nevu pointered pont az iro pointer cime, szoval zavaros
az elnevezes. Inkabb nevezd tail-nek.
> #pragma inline // van erre szuksegem egyaltalan? (asm Int 0x09)
Szerintem nincs.
> while ( kbhit() )
> {
> getch();
> };
E helyett lehet egy
*head = *tail;
ha elozoleg mar jo ertekek vannak a pointerekben:
tail = (unsigned int far *)0x0040001C;
head = (unsigned int far *)0x0040001E;
(persze ezeket korabbra kell tenni)
> olvasok = (unsigned int far *)0x0040001C;
> irok = (unsigned int far *)MK_FP( 0x0040, *olvasok );
Igen, csak mas nevekkel:
irok = (unsigned int far *)MK_FP( 0x0040, *tail );
A tobbi jo, csak olvasok helyett tail-t irj. Esetleg lehet
egyszerubben irni egy picivel:
*tail += 2;
if (*tail == 0x40) *tail = 0x1e;
Ez egyebkent veszelyesebb, mint az elozo!!! Ha ugyanis bejon egy
billentyuleutes menet kozben, akkor tulirhat az interrupt, tehat le
kell tiltani az interrupotokat a rutin korul!! A Te modszered szerint
is le kell tiltani az IT-ket egyebkent, mert johet be ott is
rosszkor. (Szoval asm cli; asm sti;)
> asm Int 0x09
Erre viszont az a gyanum, nincs szukseg. Ez a billentyuzet hardware-t
olvassa le, hogy milyen billentyuleutes jon. Most viszont nem jon
semmi!! Szoval probald ki, hogy mukodik-e, ha kihagyod. Azt hiszem,
mennie kell.
István
-- Istvan Marosi -- http://www.sch.bme.hu/~marosi --
-- Recosoft Ltd. -- mailto: --
|
+ - | Re: korbejaro planetas (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 16 Apr 98 at 13:05, > wrote:
> 1) fordulasos indexelesre:
>
> - teglalapra negyszer fordulunk balra -> valtozo = -4
Khmm...
Szoval a teglalapkor _jobbra_ fordulunk negyszer, tehat +4 lesz benne
a vegen.
Tehat megint leirom: Indulaskor a vektorunk ugy all, hogy ha a
vektor iranyaba nezunk, akkor jobbra van a fekete pixel, balra pedig
a feher.
> - konkav idomokra ugy nez ki hogy a konkavitas csucsaban van egy
> plussz jobbra, az hogy a valtozo mennyivel nagyobb mint -4 a
> konkavitasok szamat mutatja.
Egyeb tipp?
> 2) iranyindexeles:
>
> - szabalyos tegalalap => 0
...stb.
Egyeb tipp?
István
-- Istvan Marosi -- http://www.sch.bme.hu/~marosi --
-- Recosoft Ltd. -- mailto: --
|
+ - | Re: Varakozas (mind) |
VÁLASZ |
Feladó: (cikkei)
|
On 15 Apr 98 at 6:30, Jalsovszky Tamas > wrote:
> Lenne egy keredesem: hogyan lehet PC-n mikroszekundumos kesleltetest
> (wait, delay ...) elerni. Tudom, hogy van valami 5-6 soros asm kod, de
> sajnos a vinyom eluszott, igy nem tudom hogyan volt a kod.
Szerintem egy megfelelo hosszusagu rovid ciklus a legjobb:
mov cx,konstans
cikl:
dec cx
jnz cikl
Az izgalmas dolog a konstans kiszamolasa: ez proci tipustol es
sebessegtol fugg, tehat programfutas kozben (inicialaskor) kell
kiszamolni. Nezd meg, hogy a Linux hogyan szamolja a BogoMips-et, az
egy ugyanilyen ciklusnak a konstansa.
Win dos boxaban egyaltalan nem evidens egyebkent a sebesseg
kiszamitasa, a Win sokat csal rajta (normal dos-ban nem tudom, az
EMM386 stb. mennyit csal a dolgon). Pl. gyakran elofordul dos
box-ban, hogy a timer tick szamlaloja hirtelen kettot ugrik!!
Kovacs Antal (XiX) mar masodszor kuldte be a millisec idomero
kodjat, az is igen izgalmas dolog. Azon alapul, hogy az 55msec-es
timer tick interruptot egy szamlalo csinalja, ami az osregi 4.77
MHz-es PC orajelrol (pontosabban a felerol) jar, azt osztja le
65536-tal. (Tehat ffff-rol indul, es amikor leszamol 0-ig, elso
kozelitesben akkor lesz interrupt.) A kod lenyege eleg rovid:
mov al,4
out 43h,al ; timer aktualis helyzete atmeneti regiszterbe
in al,40h ; atmeneti regiszter also byte-jat beolvassuk
mov ah,al
in al,40h ; felso byte-jat is
xchg al,ah ; es hat azok pont forditva alakultak...
not ax ; a szamlalo lefele szamol, igy lesz felfele szamlalo
A gond ezzel a szammal az, hogy az interrupt vezerlo szintvezerelt
uzemmodba van programozva (vagy pont forditva, most nem is tudom, de
lenyeg, hogy pont rosszul), ezert csak minden masodik leszamlalaskor
lesz belole interrupt!!!
Vagyis ahhoz, hogy a 0x40:0x6c cimen tarolt timer tick szamlalo
erteke eggyel novekedjen, ketszer kell 65536-szor leszamolnia a
szamlalonak, es amikor kiolvassuk az erteket a fenti modon, nem
tudjuk, hogy eppen melyik felidoben vagyunk!!! Szoval az az erzesem,
hogy a Clockmsec rutin nem jol mukodik!!! Szivesen veszem, ha valaki
megcafol, mert tobbszor is lattam mar ilyen rutint, es nem ertettem,
hogy miert mukodne jol.
XiX, probald ki, hogy merj meg vele egy kb. 20 msec-es rutint (azt
jol kell merje), majd egy kb. 40 msec-eset, azt rosszul kell merje
(kb. 13 msec-nek).
Mindenesetre rovid (<27 msec) ido meresere jol hasznalhato. Viszont
kimertem azt is, hogy maga ez a nehany utasitas a sok i/o muvelet
miatt olyan lassu, hogy kozben kb. 30-at szamol a szamlalo, amit
kiolvasunk, ami kb. 12 mikrosec. Szoval ennel pontosabb meresre nem
hasznalhato.
Ja, win alatti dos box-ban ez a modszer is nagyon rossz eredmenyt ad,
meg inkabb lassul a dolog (kb. 7-szer annyi ido kell hozza win alatt
az i/o virtualizalas miatt) es nem is jar szinkronban ez a szamlalo a
timer tick-kel!
István
-- Istvan Marosi -- http://www.sch.bme.hu/~marosi --
-- Recosoft Ltd. -- mailto: --
|
|