Hollosi Information eXchange /HIX/
HIX CODER 1103
Copyright (C) HIX
2001-03-01
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: prim szam teszteles... (mind)  70 sor     (cikkei)
2 Re: halozat gepei (tcp/ip) (mind)  36 sor     (cikkei)
3 A halozat gepei (mind)  15 sor     (cikkei)
4 Re: primszam teszteles (mind)  34 sor     (cikkei)
5 Re: SQL guruk! (mind)  14 sor     (cikkei)
6 Win32 IO Block (mind)  28 sor     (cikkei)
7 Re: Nem szabad nagy text fajlban turkalni! (#1102) (mind)  43 sor     (cikkei)
8 Re: primszam teszteles (#1102) (mind)  29 sor     (cikkei)
9 RE: primszam teszteles (mind)  38 sor     (cikkei)
10 NetManage HTML (mind)  12 sor     (cikkei)
11 Re: gyors rendezesi algoritmus (mind)  42 sor     (cikkei)
12 Re: primszam teszteles (mind)  22 sor     (cikkei)
13 RE:progi se taskbaron, se systemtray-en (mind)  11 sor     (cikkei)
14 RE:billentyuzet figyeles. (mind)  15 sor     (cikkei)
15 Rendezes (mind)  34 sor     (cikkei)

+ - Re: prim szam teszteles... (mind) VÁLASZ  Feladó: (cikkei)

hi HIX CODER!

HC> mi a velemenyetek, milyen algoritmust erdemes hasznalni annak
HC> eldontesere, hogy egy szam prim-e, vagy nem.
HC> A lenyeg az, hogy nem tul nagy szamokrol van szo,
HC> de rengetegszer elofordul egy-egy szam ellenorzese.
HC> En a kovetkezo nagyon primitiv algoritmust hasznalom:

HC> function primtest(p:word):boolean;
HC> begin
HC>      s:=true;
HC>      for j:=2 to p div 2 do
HC>           if p mod j = 0 then s:=false;
HC> primtest:=s;
HC> end;

HC> azt tudom, hogy ugy lehetne finomitani, hogy 2-n kivul csak paratlan
HC> szamokkal ellenorzom az oszthatosagot, de maskent hogy lehetne
HC> lenyegesen javitani?
HC> elore is kosz,
HC> udv.:Kozma László

1) haat... nem rossz... de... folosleges vegigmenni az egesz cikluson,
ha egyszer kettovel ugyis minden masodik szam oszthato... azaz az elso
eszrevetelem ertelemszeruen jon:

function primteszt(p:word):boolean;
;


2) ha tenyleg csak wordokrol van szo, akkor itt egy jobb...
   ha sokat akarsz tesztelni, akkor az se lenne rossz, ha
   eloszor egy tombbe (array[1..$ff00] of boolean} osszeszedned,
   hogy az adott szam prim-e, vagy sem, es akkor a teszt vegulis
   csak _egy_ memoriaolvasas lenne, nem lenne benne se ciklus,
   se semmi mas...
   ez a modszer 6`5000 szamig mukodik....

3) ha nem csak wordrol van szo, de meg mindig a kicsi szamoknal
   maradunk, akkor marad a tomb (array[1..$ff00] of byte} es ez
   a tomb vegulis egy bitmap... azaz, ha te a 10-re vagy kivancsi,
   akkor az az (tomb[2] and 2<>0) eredmenye adja majd meg, hogy
   mi van... maskent ugyanez: tehat egy tomb byteokbol, ahol minden
   byte 8 bitbol all, es minden bit reprezental egy egy szamot...
   ha a bit 1, akkor prim, ha 0, akkor nem.... (vagy ahogy jollesik)
   ez a modszer 65000*8=520`000 szamig mukodik...

az elozo ket esetben persze a proggy elejen ossze kell allitani ezt
a tombot... de ha tenyleg sok szamrol van szo, akkor ez bejohet...

4) ha ennel nagyobb szamokrol akarod nagyon gyorsan eldoteni, hogy
   prim-e, vagy sem, akkor... ismet osszeallitod az 3. pontban
   emlegetett bitmapes tombot, es.... vegigfutsz a tomb bitjein...
   illetve csak a kerdeses szam gyokeig (mert ugye ha x^2=m,
   akkor (x+1)^2>m, tehat eleg csak a szam gyoekig menni!)
   tehat vegigfutsz a tombon, ahol prim szamra utalo bitet latsz,
   azzal maradekosan elosztod a kerdeses szamot, ha az eredmeny 0,
   stb...;))) ez a modszer majdnem ugyanaz, mint amit fent leirtal
   azzal a kulonbseggel, hogy csak az eleve prim szamokkal osztasz..
   azaz megsporolsz magadnak egy valad osztast.....
   ez a modszer (65000*8)^2=270`400`000`000 szamig mukodik!!!!!!

remelem valamejik megoldas tetszeni fog...;)))) csao...

tovabbi jo kodolast.... Mc
+ - Re: halozat gepei (tcp/ip) (mind) VÁLASZ  Feladó: (cikkei)

hi HIX CODER!

HC> Ha valakinek volna rola informacioja, irhatna egy par szot arrol, hogy
HC> windows alatt hogyan lehetne lekerdezni, a halozat gepeit, pontosabban
HC> azok neveit. (nem feltetlen TCP/IP halozatrol van szo !!!)
haat, hogy egyebkent hogyan kell, azt nem tudom... de hogy
tcp-nel hogyan kell, azt meg tudom mondani...
hozzavalok:
 - sajat ip cim...
 - netmask
 - valami fuggveny, ami ip cimbol hostnamet csinal...
   ha nincs, akkor nezz utana a ptr dns rekordoknak....;))))

a tennivalo feletteb egyszeru..
1) fogod az ip cim bytejait, es leandeled a netmaskkal...
   pl1:  ip=10.1.4.254  mask=255.255.255.192  andi=10.1.4.192
   pl2:  ip=10.1.4.254  mask=255.255.255.0    andi=10.1.4.0
2) kiszamitod a not netmask erteket...
   pl1:  mask=255.255.255.192    notm=0.0.0.63
   pl2:  mask-255.255.255.0      notm=0.0.0.255
3) kiszamitod az andi + notm erteket...
   pl1:  andi=10.1.4.192 notm=0.0.0.63  sumi=10.1.4.255
   pl2:  andi=10.1.4.0   notm=0.0.0.255 sumi=10.1.4.255
4) elinditasz egy ciklust andi-tol sumi-ig...
   pl1:  for ip=10.1.4.192 to 10.1.4.255
   pl2:  for ip=10.1.4.0   to 10.1.4.255
   es lekerdezed az osszes cimet...
5: vegulis ha nagyon szigoruan nezed, akkor....
   az elso cimet (10.1.4.192) nem kell lekerdezni, mert az a multicast cim...
   es az utolsot sem, mert (10.1.4.255) mert az meg a broadcast cim...

remelem erthetoen sikerult eloadnom....;)))))

ui: ez _csak_ az ip-s halozathoz lesz jo....

na tovabbi jo kodolast mindenkinek..... Mc
+ - A halozat gepei (mind) VÁLASZ  Feladó: (cikkei)

> Ha valakinek volna rola informacioja, irhatna egy par szot arrol, hogy
> windows alatt hogyan lehetne lekerdezni, a halozat gepeit, pontosabban
> azok neveit.
>
> Azerrt nem irok konkret nyelvet, mert inkabb az erdekel milyen API
> fuggvenyekkel lehetne ezt megcsinalni, es milyen modon.

Hi!

Nezz korul a http://www.delphi-jedi.org cimen, ott egy halom API
fuggyveny van temakorok szerint csoportositva. SZVSZ a LANManager-ben
lehet ilyesmi amit keresel.

Udv:
Andras
+ - Re: primszam teszteles (mind) VÁLASZ  Feladó: (cikkei)

Laszlo,
Attol fuggoen, hogy milyen kicsi a szam erdemes megkeresni az osszes
primet, array-be ultetni oket, es akkor csak ellenorizni, hogy benne van-e
a keresett szam (az array-ben). Ez azert gyosabb, mintha vegigosztanal a
paratlan szamokkal. Attol fugg, hogy a memoria vagy sebesseg a fontosabb.
Bar ha eleg kicsi szamokrol van szo akkor a klasszikus teszteles sem tart
sokaig. Viszont ha _nagyon_ sokszor ellenorzod a szamokat, akkor az
array-es ajanlatot alkalmaznam a helyedben...

Egy par ajanlat:
1) a ciklusod nem kell hogy a p/2-ig menjen, eleg a gyokeig keresni.
2) minden eddigi primszam 6n+1 vagy 6n-1 alaku (erre van bizonyitas, most
nem talalom a szoveget, de utananezhetsz a mek.iif.hu-n) - hasznalhato, ha
egy intervallumban keresed a primeket...

Tehat akkor a progi valamilyen hasonlo format oltene:

function prime(szam: integer): Boolean;
var i: integer;
;

Egy par modositason kivul azt hiszem hogy nagyobb eredmenyeket nem fogsz
elerni.
Nezz szet a mek.iif.hu-n ugy emlekszek, hogy talaltam valamilyen szoveget a
primszamokkal kapcsolatban (epp programozoi megkozelitessel).

Udv: Gergo
+ - Re: SQL guruk! (mind) VÁLASZ  Feladó: (cikkei)

Próbáld meg a következőket

SELECT T1.a FROM Tabla T1
GROUP BY T1.a
HAVING Count(*)>1

vagy

SELECT * FROM Tabla
WHERE Tabla.a in
(SELECT T1.a FROM Tabla T1
GROUP BY T1.a
HAVING Count(*)>1)
ORDER BY T1.a
+ - Win32 IO Block (mind) VÁLASZ  Feladó: (cikkei)

Udvozletem mindenkinek!

Eloszor is szeretnek koszonetet mondani azoknak,
akik az elozo kerdesemre valaszoltak...

A kerdesem pedig a kovetkezo:
megnyitok egy file-t:
  hStdIn = CreateFile("CONIN$" , GENERIC_READ , FILE_SHARE_READ , NULL ,
OPEN_EXISTING , 0 , 0);

ezek után ezt a handle-t egy kulon szalon olvasom ki:
  while(ReadFile(hStdIn, buf, sizeof(buf)-1, &br, NULL))
   {
    if(br == 0) break;
    printf("StdIn: %s\n", buf);
   }

korulbelul igy.

Sajnos a szalat a CloseHandle(hStdIn) nem szakitja meg, azaz a ReadFile nem
lep ki
mikor egy masik szalon lezarom a file handle-t(nem ugy, mint mondjuk
linuxban).
Hogy lehet a ReadFile-t megszakitani, egy masik szalbol?
Van erre valami otletetek?

Elore is kosz
htrw
+ - Re: Nem szabad nagy text fajlban turkalni! (#1102) (mind) VÁLASZ  Feladó: (cikkei)

Hi Coders!

Józsi, 
> ...
> Senkit nem akartam megsérteni, csak ez a
> lamerség már bosszantott...bocs...
En be szoktam vallani, hogy lammerkodom :)))
Pedig 2 darab kisujjam van !!!


Robi, 
>> Röviden: ne!
>Röviden: de!
> A probléma ott kezdődik a mai programozó világgal,
> hogy túl könnyedén alkotható valami futni látszó dolog
> ezekkel az automatikus program-generátor eszközökkel,
> ...
Oly melyseges az egyetertesem, hogy csak na.

Bar az eredeti kerdest en tettem fel, talan
azt is hozzatehetnem, hogy ezenkivul 2.4GB (giga)
text (ha szigoruan vesszuk a text kijelentest)
allomanyom van. Ezekben mar megtanultam "turkalni".
Pont a cikkben (lsd. mint fent) emlitett okok
miatt nem hasznalok "DB" kezelot. Irtam egyet
(igaz meg nincs teljesen kesz) magamnak.

Az en specialis problemamat az Oracle es "tsai"-val
talan meg lehetne oldani (a feladat amugy
nem akkora), de kulon gep + software + ... .

Amugy a binaris allomany es a text allomany
kozott mi a kulonmseg, HA adott az indexuk
(vmi szempont alapjan mar legyartottad a idx-et)
Nem arra gondolok, hogy tomoritve van!

Aki latot mar (jo nagy, tobb MB) .RTF vagy .PS
file-t az tudja mi a jo a text-ben.

p.s.: Aki irt sajat db kezelot azzal szivesen
      tarsalognek , van meg nehany problemam

udv.: XiX/PsychoMix
+ - Re: primszam teszteles (#1102) (mind) VÁLASZ  Feladó: (cikkei)

Hi Coders!

Kozma László, 
> mi a velemenyetek, milyen algoritmust erdemes hasznalni
> annak eldontesere, hogy egy szam prim-e, vagy nem.
Fenykabelt lehetne rekeszteni a primtesztelo
algoritmusokkal. Irtam (van gyorsabb is!!!) asm-ba.
Cim: http://psychomix.dhs.org/XiX/xix_down.html

asm to pas (brain version)
Function Primtest (szam : Longint) : WordBool;
Var oszto, gyok : Longint;
;

udv.: XiX/PsychoMix
+ - RE: primszam teszteles (mind) VÁLASZ  Feladó: (cikkei)

> mi a velemenyetek, milyen algoritmust erdemes hasznalni annak
> eldontesere, hogy egy szam prim-e, vagy nem.

Hello!
Ha nagyon sokszor kell ellenorizned, hogy 1 szam prim-e es nem olyan nagyok
a szamok, akkor inkabb tarold a primszamokat egy tombben, es az ellenorzo
fuggvenyben vizsgalod, hogy szerepel-e az adott szam a tombben.

const maxprn=200;{ max hany primszam legyen tarolva }
      maxprim=100;{ max meddig keresse a primeket }
var a:array[1..maxprn] of word;
    ai:integer;
procedure generalprimeket;
var i,j,n:integer;
    oszthato:boolean;
;

Ha nem tudod, hogy mennyi primszamra lesz szukseged es hasznalhatsz
dinamikus tombot (delphi), megirhatod ugy a "primtest" fuggvenyt, hogy az
ellenorzeskor generalja a primeket, ha szukseg van rajuk.

Remelem segitettem,
Sok sikert,
	Levi
+ - NetManage HTML (mind) VÁLASZ  Feladó: (cikkei)

Szervusztok

A most elkeszult progimban a NetManage ceg HTML1 komponenset hasznaltam fel.
A kerdesem az lenne, hogy mit kell beallitanom ahoz, hogy Delphi nelkuli
gepen is futtathato legyen a kesz progim. Azt halottam, hogy
regisztraltatni??? kell a NetManage komponenst az uj gepen is. Sajnos nem
tudom azt hogyan kell.

Delphi 3.0 prof-ot hasznalok.
Segitsegeteket elore is koszonom:

  Gyula
+ - Re: gyors rendezesi algoritmus (mind) VÁLASZ  Feladó: (cikkei)

CODER #1102, Selmeci Tamas >:
>modszer ennyit tud. Azonban hallottam arrol, hogy van valami quicksort

Itt egy pascal algoritmus a rendezesre, remelem ertheto. A numbaz egy tomb,
amiben a szamok vannak, a left, right erteket pedig ugy kell megadni, hogy
mettol meddig rendezzen. Tehat 1500 szam eseten a hivas: quicksort(1,1500).

Procedure QuickSort(left,right:Word);
  Var i,j:Word;
      x,temp:Real;
  Begin
    x:=(numbaz[left]+numbaz[right])*0.5;
    i:=left;
    j:=right;
    While i<j Do
      Begin
        While numbaz[i]<x Do
          Inc(i);
        While numbaz[j]>x Do
          Dec(j);
        If i<=j
        Then Begin
               temp:=numbaz[i];
               numbaz[i]:=numbaz[j];
               numbaz[j]:=temp;
               Inc(i);
               Dec(j);
             End;
      End;
    If left<j
    Then QuickSort(left,i);
    If i<right
    Then QuickSort(i,right);
  End;


Remelem segitettem.

Udv,
		Hunter				-[HE 1.15beta6]-
"Noi logika. - Ez valami vicc?"
MMI MLI
+ - Re: primszam teszteles (mind) VÁLASZ  Feladó: (cikkei)

Szevasz!

> Felado :  [Romania]
> Temakor: primszam teszteles ( 25 sor )
> Idopont: Tue Feb 27 21:23:06 CET 2001 CODER #1102
> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> mi a velemenyetek, milyen algoritmust erdemes hasznalni annak
> eldontesere, hogy egy szam prim-e, vagy nem.
> A lenyeg az, hogy nem tul nagy szamokrol van szo,
> de rengetegszer elofordul egy-egy szam ellenorzese.
 ....
> azt tudom, hogy ugy lehetne finomitani, hogy 2-n kivul csak paratlan
> szamokkal ellenorzom az oszthatosagot, de maskent hogy lehetne
> lenyegesen javitani?
Az osztas probat csak a szam negyzetgyokeig kell elvegezni, nem p div 2 -ig.
Ha sokszor kell ellenorizni es nem tul nagy szamokat, inkabb szamold ki
elore a primeket es abban keress.
Nagy primekre mas modszert hasznalnak, nem osztogatnak. Most nem jut eszembe
pontosan, de ha esetleg mas nem ir vmi hatekonyat szolj es elokeresem.

Udv!
Sipi
+ - RE:progi se taskbaron, se systemtray-en (mind) VÁLASZ  Feladó: (cikkei)

Meg tudna mondani nekem valaki, hogyan lehet megcsinalni Delphi-ben vagy
Borland C Builder 4-ben, hogy egy futo program ne latszodjon a taskbaron
se, es a system tray-en se? A lenyeg az lenne, hogy ne lehessen
Alt+Tab-bal ralepni.

Toltsed le az SDK-at es nezd meg a service programozast, mert ahogy
ertelek Neked az kell .

Szia

TI
+ - RE:billentyuzet figyeles. (mind) VÁLASZ  Feladó: (cikkei)

...

 Szuksegem volna olyan peldaprogramra (w95, bc4.5), amely megmutatja,
hogy lehet figyelni a billentyuzetrol erkezo uzeneteket es hogy lehet
ezeket lekezelni. Ha csak doksirol tudtok, az is jo. Elore is koszi
minden hozzaszolast.

A DDK-ban van ra mintaprogram, amely a billentyuzet ioctrl-os
lekerdezeset mutatja be.
En nt-re irok drivereket, es az nt DDK-ban lattam,  de ez a resz user
szintu, tehat minden M$-on egyforma, a DDK az MSDN-rol tolthato le.

Szia

TI
+ - Rendezes (mind) VÁLASZ  Feladó: (cikkei)

Hali Coderek, szervussz Tamas

Szerintem szovegre a leggyorsabb rendezesi algoritmus a binaris-fa
algoritmus.
Ennek az algoritmusnak az az elonye, hogy a memoriaban rendez, nem ir a
lemezre csak olvas. Ahogy leolvas egy elemet, a tobbi beolfasott elemhez
 kepest azonnal rendezett allapotba rakja. A mozdulatok szama, amelyet
meg kell tegyen egy elemnel 2^x=e (elemek szama, x a mozdulatok szama).
Mint az a kepletbol is kitunik ennek foleg a sok adat rendezese az erossege
10 adatot 4 mozdulatbol 100 adatot 7 mozdulatbol 100 1000000 adatot 20
mozdulatbol rendez. A nagy hatranya az, hogy kell elegendo memorad legyen.
Dinamikus adatkezeles igy a Pascalos 64k hatart is atlepi. A megoldas: letre
kell hozni egy rekord tipusu valtozot amelynek elemei: a szamodra rendezendo
informacio es ket mutato(pointer) amit kezdetbol nullra kell tenni. A
rendezes ugy tortenik, hogy kezdetbol megalkotsz egy elemet(beteszed az
infot, a ket mutatot nullazod pascal =NILL). Ez lessz a gyoker. Veszed a
kovetkezo erteket, megnezed, hogy kisebb-e mint a gyoker ha igen akkor balra
ha nem akkor jobbra teszed (feltoltod a neked szukseges ertekkel, a
mutatokat nullazod, a gyoker jobb vagy bal oldali mutatojat(az esetnek
megfelelo) rairanyitod az elemre). Veszed a kovetkezo elemet, es mint az
elozo lepesekben is addig messz jobbra, balra a faban amig egy olyan elemhez
erkezel, amelynek a mutatoja null. (tehat ha az elem erteke kisebb mint az
aktualis level amelyiken allsz - tehet balra kell menned - es a baloldali
mutato null) oda kell beszurnod az elemet. A rendezett kiolvasas pedig:
addig messz balra amig tudsz, majd veszed bal oldal, level, jobb oldal, de
ha a jobb oldalbol nyilik baloldal, akkor elobb azt kell kiolvasni. Tehat
mint az (gondolom) latszik az egesz egy kis rekurziv fuggvenyt igenyel.
Nem tudom mennyire vilagosan fogalmaztam, de remelem megerted amit irtam. En
is hasznaltam hasonlo celra, az enyem gyorsabb volt mint a NC, es nemtudom
vetted-e eszre az NC csak max 2000 filet tud megjeleniteni egy konyvtarban.

NagyI(Sze'kelyudvarhely)

U.I. ment a listara is, maganban is

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