Vita:Maximum és minimum kiválasztás (algoritmus)

A Programozás Wiki wikiből

Jelen állapotában pedig definiálatlan viselkedést (gyakorlatban többnyire segfault) ad 0 hosszú tömbökre.

Miért, talán definiálva van az üres halmaz legkisebb eleme? Akármilyen eredményt is adna vissza a kód 0 hosszú tömbre, az mindenképp rossz válasz lenne. De ha gondolod, beírhatod a szócikkbe, hogy a probléma csak nem üres tömbre/halmazra értelmezhető, ezért az algoritmus sem törődik az üres bemenettel. Csaboka2 2011. augusztus 20., 10:12 (CEST)

Hasonlóképpen azt is kérdezhetnénk, hogy definiálva van-e a negatív extremális elemek minimuma. Én más kódjához nem írok használati utasítást. Doi 2011. augusztus 21., 20:26 (CEST)

Nem értem, miért nem látod a két dolog között a különbséget. Az egyik elvi korlát: üres halmaznak nincs legkisebb, legnagyobb, legzöldebb, legfinomabb, stb. eleme, mert nincs egy eleme sem. Az viszont, hogy egy halmaznak le van korlátozva alulról a minimuma (a hardver korlátain túl), egy önkényes megkötés. De hogy egyértelmű legyen, beírtam a szócikkbe is, hogy a kód nem kezeli az értelmetlen bemenetet. Csaboka2 2011. augusztus 21., 23:28 (CEST)

Értékelem, hogy beleírtad. Én azt furcsálltam, hogy belemódosítottál egy kódba egy olyan eset miatt, ami szerintem gyakorlatban nem fordul elő. Ráadásul nem is biztos, hogy így jobb. Szerintem nem kell neked magyaráznom, mennyivel megnyugtatóbb olyan alprogramokat használni, amiket a paraméterein keresztül nem lehet fejreállítani. Pl. az strstr is visszaad valamit, ha nincs a stringben a rész. Nyilván minden attól függ, hogy a konkrét programban mi fordul elő. Mellesleg közben én is gondolkodtam a keresésen, és arra jutottam, hogy ha a magam részéről meg akarnám oldani a problémát, akkor valószínű az üres esetet külön lekezelném az elején. Lehet, hogy annak idején eszembe is jutott, csak úgy véltem, hogy rontaná a példa érthetőségét. Doi 2011. augusztus 22., 06:41 (CEST)

Azt, hogy a gyakorlatban mi fordul elő és mi nem, azt senki nem tudja biztosra megmondani. ("Láttam én már karón varjút", ugye.) Attól pedig nem lesz jobb egy program, hogy továbbmegy a hibás bemenetre, és csendben csinálja a hülyeséget. Lehetne definiálni a kimenetet értelmetlen bemenetre is (pl. visszatérési érték=INT_MIN, index=-1), de ennek a kimenetnek az ellenőrzése ebben az esetben pont ugyanannyi erőfeszítés lenne, mint a bemenet előzetes ellenőrzése. (Ha pedig se előtte, se utána nem ellenőrzöl, akkor csendben fogod csinálni a hülyeséget.) Az strstr más tészta, mert ott a "hibás" bemenet detektálása pontosan annyi erőfeszítés, mint amennyibe maga az algoritmus futttatása kerül. Csaboka2 2011. augusztus 22., 20:09 (CEST)

Akkor úgy tűnik, lényegében ugyanazt gondoljuk. Ha a speciális eset nem fordul elő, akkor abban a programban ki lehet hagyni a vizsgálatot. Az strstr csak arra volt példa, hogy létezhet olyan jól definiált visszatérési érték, ami nem az "általános" értelemben vett eredmény. Doi 2011. augusztus 23., 10:20 (CEST)

Azért az ugye még megvan, hogy ezek itt példaalgoritmusok, nem komplett programok? Egyébként meg ha akkora probléma, akkor assert()-et az elejére (vagy egy csúnya üreshalmazvizsgálatot és üres return-t) és kész. Amennyit itt vitáztok rajta, annyiból már legalább három komplett szócikket megírhattatok volna. :) Sting 2011. augusztus 23., 14:03 (CEST)