algoritmus
Moczik Gabor
pm at progzmaster.hu
Sat Dec 2 01:30:33 CET 2006
vajk fekete wrote:
> - kenyszeres pointeraritmetika hasznalat, de pl a reference inicializalasanal megis inkabb a tombindex szintakszist hasznalja.
> - a *left++=*right semmivel nem fordul hatekonyabbra mint a *left=*right ; left++; csak nehezebb elolvasni.
Hat igen, mazohistaknak ajanlott...
> - ha a fenti modon kenyszeresen tomorit, akkor a while-t is irhatta volna igy: while (reference_key<(right--)->key); csak akkor meg lehetetlenebb elolvasni
Nem ekvivalens, mert a
while (reference_key < right->key) right--; /* search from right */
eseten ha mar belepeskor hamis a feltetel, akkor a right-- nem fut le, meg a
te esetedben a feltetel kiertekelesekor legalabb egyszer igen.
> - egy az algoritmus megerteset szolgalo oktatasi celo source-ban nem az erthetosegre kellene torekedni?
De, es altalaban celszeru lenne az 1 utasitas 1 sor szabalyhoz ragaszkodni,
kiveve ha papirra irsz es mar csak 2 sornyi hely van :-)
Ugyanilyen olvashatosagi kerdes az is, hogy a { } jeleket hova es hogyan
rakod. Pl., szerintem tok idiota megoldas, ha
if (feltetel)
{
valami
}
if (feltetel)
{
if (feltetel2)
{
valami2
}
}
format hasznaljak. A { } jel eleve nem jelent egy kulon beagyazasi szintet,
tovabba ha talalsz egy } jelet, nem az azonos oszlopban kell kutatni ha a
hozza valo if-et meg akarod talalni, hanem 1-el kijjebb. Latszolag
ossze-vissza bedobalt kapcsos zarojelek az utasitasok kozott.
en igy szoktam:
if (feltetel) {
if (feltetel2) {
valami
}
} else {
if (feltetel2) {
masvalami
}
}
switch(x) {
case 1 :...
break;
case 2 :...
break;
default :...
}
valtozo deklaracio sokkal olvashatobb ha a tipus es a valtozo neve oszlopra
igazitva van, pl.:
int i,j,k;
unsigned char tmp;
struct TDevice device1;
Amugy erdemes a linux kernel kodolasi stilus ajanlasat elolvasni, szerintem
jo dolgokat tartalmaz.
> Amugy en is irtam olyan aritmetikai algoritmusokat, hogy az ilyen ekv. atalakitasok utan harom sor krikszkraksz volt az egesz de mukodott. Viszont 2 honap mulva orakba tellett megertenem hogy mit csinal. Pedig en irtam!
Teljesen egyetertek, erdemes megfogadni masnak is!
Neha en is addig optimalizalom a kodot, hogy 2 ev mulva mar ranezesre
nehezen hamozhato ki, mikor milyen adatra milyen feltetel teljesul. Volt mar
ra pelda hogy ujrairtam a kodot emiatt, mert nem sikerult megfeleloen
modositani.
Ezt csak bonyolitja ha "kiaknazza" az ember 1 sorban az osszes C operatort.
Velemenyem szerint az "if (valami--) ..." vagy x=y++ vagy x=++y meg az
erthetoseg keretein belul van, de a "left side"-ra barmilyen ilyen operatort
irni...
--
((( Móczik Gábor )))--((( pm -> @ -> progzmaster -> . -> hu )))
((( Skype: moczik )))--((( Website: http://www.progzmaster.hu )))
More information about the Elektro
mailing list