Hollosi Information eXchange /HIX/
HIX CODER 73
Copyright (C) HIX
1998-04-09
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 ez meg az (mind)  26 sor     (cikkei)
2 Int 13h (mind)  13 sor     (cikkei)
3 Re: Feladat: eldonteni, hogy ... (mind)  81 sor     (cikkei)
4 Re: Feladat: eldonteni, hogy ... (mind)  70 sor     (cikkei)
5 MFC - ODBC ujra (mind)  26 sor     (cikkei)

+ - ez meg az (mind) VÁLASZ  Feladó: (cikkei)

>Utoljara a Fortran kapcsan hallottam, hogy a rekurzio lassu, mert
>abban nincs stack. De manapsag?

Az biztos hogy piszok lassu, ugyanis a Fortran-ban nincs is a
rekurzio implementalva.....legalabbis a klasszikus Fortran77-ben.

Mostanaban ketevente uj szabvanyt talanak ki, hogy valahogy mar meg
lehessen FORTRANBAN is csinalni azt amit C/C++ -ben...de ezen verziok
nem igazan elterjedtek.

Maskepp a rekurzio egy ciklushoz kepes mindenkeppen sokkal lassubb mert
tulajdonkepp onmagat masolja a memoriaba ujra meg ujra ezt kell egy
ciklusindex megvaltoztatasaval osszehasonlitani.

>Ne mondd mar, hogy unix alatt nem tudsz csincsas dolgokat muvelni, ha
>nagyon arra vagyodsz! ? :))  (Bocs)

Nem biza. Nagyon ketlem hogy unix alatt konnyeden tudsz irni egy olyan
grafikus progit amelyet minden platformon konnyen lefordithatsz.
Egyresz masreszt az embereknek PC-juk van, ez teny. A unix-os tabor foleg
linux hackerek-bol all es nem igazan jol jovedelmezo linux alatt
programozni.

marattam,

szindbad.
+ - Int 13h (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok !

  Na en megprobaltam ! De ez valahogy olyan magatol ertetodo volt, hogy
valamiert nem fog menni, .... :-)
Nos az a baj, hogy az a suket DOS tobb szegmensrol ir. Na. Szoval nagyon
halas lennek ha valaki egy kicsi progit irna es azt nekem elkuldene.
Szoval ha valakinek kell meg tudom az en progimat is mutatni de
szerintem semmi erdekeset nem lehet benne kapni.

Elore is koszi.


Moszi
+ - Re: Feladat: eldonteni, hogy ... (mind) VÁLASZ  Feladó: (cikkei)

On  7 Apr 98 at 8:58, Antal Kovacs > wrote:

> Hogyan lehet egy binaris szamrol OSZTAS nelkul eldonteni,
> hogy az utolso szamjegye 1, 3, 7, vagy 9?
> Osztas nelkul azert mert az osztas sok cpuclock (speed).

Maganban mar leveleztunk ilyesmirol, ugyhogy tudom, hogy ez a
primekhez kell Neked, mert hogy a primek ilyenre vegzodnek, ugyhogy
inkabb kicsit mas kerdesre valaszolok, ami meg inkabb megszuri a
primeket :)

A fenti vegzodesek annyit tesznek, hogy a szam nem oszthato 2-vel es
5-tel. Inkabb arra valaszolok, hogy hogyan lehet nagy binaris
szamokrol gyorsan eldonteni, hogy nem oszthatoak 2-vel, 3-mal es
5-tel. (Tehat 3-mal is!)

A 2-vel valo oszthatosagra inkabb nem valaszolok :)

3-mal es 5-tel meg marha erdekesen alakulnak a dolgok:

16 mod 3 = 1
16 mod 5 = 1

es meg raadasul:

256 mod 3 = 1
256 mod 5 = 1

Vagyis ha osszeadod a szam szamjegyeit: akar 16-os szemrendszerbeli
szamjegyeit, akar 256-os szamrendszerbeli szamjegyeit (tehat a
byte-jait), akkor az osszegrol kell csak eldonteni, hogy oszthato-e
3-mal illetve 5-tel. Ezt mar egy-egy gyors (byte-os) osztassal
megteheted, vagy ha ezt is el akarod sporolni, hasznalhatsz egyetlen
lookup tablat a ketfele dontesre (3-mal ill. 5-tel oszthatosag).

En 256-os szamrendszerben szamolnek, mert ahhoz jobban illeszkedik a
memoria cimezhetosege: Az n byte hosszu szam byte-jait osszeadnam,
kozben a tulcsordulasra ugy figyelnek, hogy a cy-t is hozzaadnam a
byte-os eredmenyhez, valahogy igy:

  mov al,0
  mov bx,offset lookuptabla
  clc
ciklus:
  adc al,[si]
  inc si     ; nem modositja a cy-t!
  dec cx     ; cx hosszu a szam byte-ban
  jnz ciklus
; es a maradek cy:
  adc al,0
; Ezek utan az al-rol kell eldonteni, hogy oszthato-e 3-mal es 5-tel.
  xlat
  cmp  al,0
  je   oszthato  ; a lookuptable kitoltesetol fuggoen kell ugrani!

; kesz.

Sajnos a 7-tel illetve 11-gyel valo oszthatosag mar nem ilyen
egyszeru: 7-tel 8-as szamrendszerben van 1-es maradek, de hat 3
bitenkent szamolni nem konnyu. Ezen kivul szoba johet meg a 4096-os
:) szamrendszer (12 bit), ott is 1 a maradek 7-tel MEG 13-MAL IS!!!
Ez mar kicsit jobb, egy byte es meg egy fel byte, ezt mar talan
erdemes szamolni, foleg, hogy ketfele oszthatosagra is ad eredmenyt.

11-hez meg az 1048576 alapu szamrendszer a legjobb (nem hulyeskedek,
tenyleg :)))) No, nem olyan bonyolult az, 2 es fel byte, azt is
viszonylag kezben lehet tartani, persze ehhez mar tenyleg hosszu
szamok kellenek, hogy elony szarmazzon abbol, hogy nem osztunk.
Osztani persze kell a vegen, de csak a 20 bites osszeget 11-gyel.

(Bocs, hogyha megbotrankoztattam valakit :))))

Ezek utan sportbol megneztem meg a 17-et is. Itt nagyon csabito az,
hogy 16-nal eggyel nagyobb, viszont megneztem a 256 mod 17-et is, es
ott kereken 1 a maradek! Szoval a 3-mal es 5-tel valo fenti byte-os
szamolas minden tovabbi szamolas nelkul kiadja a 17-es oszthatosagot
is, eppen csak a lookup tablat kell modositani!

István
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:  --
+ - Re: Feladat: eldonteni, hogy ... (mind) VÁLASZ  Feladó: (cikkei)

>Part 1:
>Hogyan lehet egy binaris szamrol OSZTAS nelkul eldonteni,
>hogy az utolso szamjegye 1, 3, 7, vagy 9?
>Osztas nelkul azert mert az osztas sok cpuclock (speed).

Ket lookup table-el eleg gyorsan meg lehet oldani.

Eloszor is megnezed, hogy a szam paratlan-e, ha nem
mar vegeztel is.
Ha paratlan, akkor a megmarado bitek (1-31) modulo 10 erteket
osszeadod. Ezt 8 bitenkent egy lookup table-el megtudod tenni,
mert az 1-es bittol a bitek 10-es modulo erteke a kovetkezokepp
nez ki: 2, 4, 8, 6 es innen ismetlodik. Tehat van egy 256 byteos
elore kiszamolt tablad, ahol minden bitkombinaciora megvan hogy
mennyi ennek a 8 bitnek a 10-es modulo erteke.
Osszeadod a 3 db 8-bites es az 1 db 7 bites szam altal mutatot
ertekeket. Ennek az eredmenye maximum 32, es ezzel az ertekkel indexelve
egy masodik tablabol kiveszed ezen ertek 10-es modulo eredmenyet
(megtehetned, hogy az osszeadasok folyaman vizsgalod a 10 fole csordulast,
de egy tablaval gyorsabb.) Ha az eredmeny 4 akkor az utolso szamjegy
az 5-os volt, kulonben pedig 1,3,7 vagy 9.

a kod valahogy igy nez ki:

shr  eax,1
jnc  nemnyert
xor  ebx,ebx
xor  ecx,ecx
mov  cl,al
mov  bl,byte ptr table0[ecx]
shr  eax,8
mov  cl,al
add  bl,byte ptr table0[ecx]
shr  eax,8
mov  cl,al
add  bl,byte ptr table0[ecx]
shr  eax,8
mov  cl,al
add  bl,byte ptr table0[ecx]
cmp  byte ptr table1[ebx],4
jz   nemnyert
nyert: ....

Hmmm igy utanaszamolva egy 386-oson az 5-el valo osztas gyorsabbnak tunik,
de pentiumon mar ez egy hajszallal gyorsabb.

Persze lehetne hasznalni 8 bites index helyett 12 vagy 16 bitest is, ha
van eleg memoriad erre, es az is bir meg gyorsitani.

Tovabb fejlesztett valtozat :
shr  eax,1
jnc  nemnyert
mov  ebx,eax
shr  ebx,16
add  ax,bx
adc  ax,0
mov  bx,ax
shr  bx,8
add  al,bl
adc  al,0
xor  ecx,ecx
mov  ecx,al
cmp  table0[ecx],4
jz   nemnyert

Ez 8-bites tablaval, 16 bitesnel az adc ax,0 utan mar lehet indexelni.
A table0 igy nez ki:
0,2,4,6,8,0,2,4,6,8,0,2,4,6,8,0 ...

Biczo Tibor
+ - MFC - ODBC ujra (mind) VÁLASZ  Feladó: (cikkei)

Hi Coders!

Regebben kerdeztem Toletek azt, hogy hogyan kell
hasznalni, az MFC CDatabase::OpenEx() metodusat.
Illetve egy konkret, problemas peldat hoztam fel.
Varkoly Csabatol kaptam gyorsan segitseget,
nagy koszonet erte, (es elnezest, hogy ilyen keson
reagalok) de sajnos nem tudtam hasznat venni, mert
abszolut kezdo vagyok a temaban.
Szoval az a problemam, hogy hogyan mukodik ez az
egesz ODBC. Mi az a DSN? Hogyan tudok relacios
adatbazisokat hasznalni, hogyan tudok indexfajlokat
kesziteni, stb....
Foxpro 2.6 tipusu adatbazisokhoz (40-50 db dbf)
szeretnek MFC-ben programot kesziteni.
A foxpro egyelore kompatibilitas miatt szukseges.
(A regi prg Clipperben, sixcdx-szel keszult :-)

Aki tudna nekem segiteni, nagyon megkoszonnem.
Nagyon-nagyon nagy segitseg lenne egy konyv, leiras
az ODBC-rol, esetleg egy masik az MFC-rol (is!),
ami lehet konyv, html, txt barmi ha lehet magyarul,
ha nem, angolul.

Koszonom,
Tibi

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS