1. |
Reszfa bejaras. (mind) |
38 sor |
(cikkei) |
2. |
Re:modem CID (mind) |
28 sor |
(cikkei) |
3. |
RE : Graf bejarasa es cimkezese vhogy (mind) |
70 sor |
(cikkei) |
4. |
Re: Graf bejaras (mind) |
48 sor |
(cikkei) |
|
+ - | Reszfa bejaras. (mind) |
VÁLASZ |
Feladó: (cikkei)
|
Cewa All!
A bejarashoz szeretnek egy keveset hozzatenni!
A rovidsege miatt idezem be.
Az alabbi forraskod bejarja egy faelem [reszfajat !!!] rekurzivan, az alabbi
feltetelekkel:
- a kezdoelemnek legalabb egy gyermekenek kell lennie.
- a tarolt fa magaban hordozza,hogy van e az aktualis faelemnek
gyermeke.//GetChildItem(hti )
- a tarolt fa magaban hordozza,hogy van e az aktualis faelemnek
kovetkezo szomszedos eleme.//GetNextSiblingItem( htiChild );
Az elsore csak figyelni kell, a tobbi nelkul pedig nincs ertelme az
alabbi forraskodnak - akar a fabejarasnak.
Szandekosan irtam forraskodot,mert ez NEM algoritmus.Ugyanis
rekurzio eseten elmentodnek a lokalis valtozok,es miutan egy elemnek
nincs gyermeke a stack re pakolt lokalis valtozokkal fut ujra es ujra a
kod ,mig van gyermek ,illetve szomszedos elem.
void Bejar (HTREEITEM hti)
{
HTREEITEM htiChild = NULL;
htiChild = GetChildItem( hti );
while( htiChild != NULL )
{
Bejar( htiChild);
htiChild = GetNextSiblingItem( htiChild );
}
}
Remelem hasznosan tudtam segiteni,Csaba.
Ui:Egyebkent engem is erdekelne az MSDN CD Szegeden.
e'\k*e\z,e\t;e=k j^o:h!e`tnek ;)
|
+ - | Re:modem CID (mind) |
VÁLASZ |
Feladó: (cikkei)
|
A CODER 0952-ban irta :
>Jutottatok valamire a modem caller id kijelzessel?
>Nekem nem jon ossze... Az AT#CID=1 -re OK, de csengetesnel csak RING-eket
>ir. Lehet, hogy EPT nem tamogatja?
1. a szolgaltatas:
Vszinu tamogatja, de meg kell rendelni. Legalabbis a matavnal igy van. Havi
200 HUF.
Sokan keverik a hivoszamkijelzest a hivoszamkuldes szolgaltatassal. (itt a
CODER-en is elofurdult par napja). A kuldes valamennyi M.o-i szolgaltatonal
ingyenes es automatikus ill. tiltani lehet egy-egy hivasra (*31*) vagy
tartosan (UFSZ), mig a kijelzes altalaban fizetos es csak megrendelesre
jon.
2. a modem:
tobbfele callerid es tobbfele modem van.
amerikai/kanadai: AT+VCID=1 (sajna az enyem csak ezt tudja)
europai/magyar: AT#CID=1 (ez med a Tied)
aztan van meg orosz meg egyeb egzotikus dolgok
A fentiek kideriteseben sokat segitett Petyus
Ezuton is koszonetet mondok neki.
Szerinte a Dialcom kulso kiprobaltan felismeri a magyar calleridt.
Udv,
-banjo-
HE 1.13.
|
+ - | RE : Graf bejarasa es cimkezese vhogy (mind) |
VÁLASZ |
Feladó: (cikkei)
|
> Felado : [Hungary]
> Temakor: Graf bejarasa es cimkezese vhogy ( 16 sor )
> Idopont: Thu Sep 21 09:14:04 EDT 2000 CODER #951
> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> Hi Coders!
>
> Ki foglalkozik grafokkal.
>
> 1. Egy grafot bejarni, es a veget
> (levelet) "leszedni" (megcimkezni)
> rekurzivan, mig mar nem lehet belole
> "leszedni", egybefuggo lett vagy elfogyott.
>
> R-----+---+---Levele
> / \
> / \
> / Levele
> Levele
>
Egy megoldas Scheme (PC Scheme 2.0) funkcionalis programozasi nyelvben :
(define (levelekNelkul graf)
(letrec
(
(max1Szomszed?
(lambda (elem graf szomszedokSzama)
(cond
( (null? graf) #!true )
( (or (eqv? elem (caar graf))
(eqv? elem (cadar graf))
)
(if (= 1 szomszedokSzama)
#!false
(max1Szomszed? elem (cdr graf) (+ 1 szomszedokSzama))
)
)
(else (max1Szomszed? elem (cdr graf) szomszedokSzama) )
)
)
)
(dobdkiALeveleket
(lambda (graf maradek voltKidobas?)
(cond
( (null? graf) (if (not voltKidobas?)
maradek
(dobdkiALeveleket maradek () #!false)
)
)
( (or (max1Szomszed? (caar graf) (append (cdr graf) maradek) 1)
(max1Szomszed? (cadar graf) (append (cdr graf) maradek) 1)
)
(dobdkiALeveleket (cdr graf) maradek #!true)
)
(else (dobdkiALeveleket (cdr graf)
(cons (car graf) maradek)
voltKidobas?
)
)
)
)
)
)
(dobdkiALeveleket graf () #!false)
)
)
Udv.,
Zoltan
|
+ - | Re: Graf bejaras (mind) |
VÁLASZ |
Feladó: (cikkei)
|
> A programom csak az elekrol kap informaciot:
> Pl.
> 4 5
> 1 2
> 5 6
> 2 3
> 3 1
> 6 4
> Ez 2 kor.
Nem irtad, de felteszem, hogy nem iranyitott graf. Nem tudom, hogy a
rekurziv algoritmus nagyon alapkovetelmeny-e, remelem nem.
Ha a programod megszerkeszti az adjacencia matrixot (ami nem tul
bonyolult), akkor szerintem az alapjan meg tudod csinalni egyszeru
iteracioval is:
hurok {
zaszlo = 0
minden oszlopra {
ha az oszlop pont 1 elemet tartalmaz {
torold az elemet
torold az elem transzponaltjat
zaszlo = 1
}
}
ha a zaszlo 0, kesz.
}
A matrixban egy oszlop akkor es csak akkor tartalmaz 1 1-est, ha
az adott csomopontba csak egy el vezet (az adjacencia matrix
definicioja szerint) azaz a csomopont egy level. Amikor az oszlopot
torlod, akkor ezt a levelet megsemmisited. Amikor a transzponaltjat
torlod, akkor leszeded az elet, ami ebbe a csomopontba vezetett.
Ezzel a level apjanak elszamat egyel csokkented, azaz a levelet
teljesen leszedted a grafrol.
Ha ez az operacio egy uj levelet csinalt (a leszedett level apja most
levelle valt) akkor annak az oszlopa immar csak 1 1-est fog
tartalmazni, igy a kovetkezo korben leszedheted. Ha vegig tudsz menni
egy olyan koron, hogy nincs oszlop pont 1 1-essel benne, akkor nincs
tobb level, vagy ures a matrix vagy egy zart grafor ir le.
Ha nagyon kell a rekurzio, akkor ugy is meg lehet csinalni, de
szerintem ennel a megoldasnal az iterativ modszer elegansabb
(a rekurzivat nehez kovetni). Az is igaz, hogy a rekurziv (elso
belegondolasra) gyorsabbnak tunik.
Zoltan
|
|