Új hozzászólás Aktív témák

  • dabadab

    titán

    válasz TheProb #4390 üzenetére

    A fobb gondok:

    1. A visszateresi ertek.

    A char az egyetlen egy darab karakter. Ha tobb karakterre (stringre) van szukseged (marpedig itt arra van) akkor char*-ot kell visszaadnod, mert jelenleg a fuggveny csak a szam legelso karakteret adja vissza.

    2. Memoriafoglalas

    Annyi memoriat foglalsz a romai szamoknak, amennyibe pont belefer a szam arab szamokkal. Ezzel egyreszt ket gond is van:
    1. a romai szamoknak jo esellyel tobb hely kell
    2. a string vegere meg oda kellene fernie a lezaro nullanak. Ugyanis C-ben ugy neznek ki a stringek, hogy van a szoveg es a vegen ott ven egy 0 erteku byte (nem egy '0' karakter!), hogy lehessen tudni, hogy hol a vege

    3. Stringkezeles

    Az elejen a nullat a legelso helyre kell beirni (romai[0]=0), onnan kezdve az strcat az gondjat viseli. A te megoldasodnal meg ott marad az elso n darab helyen valami memoriaszemet es az strcat az utan fogja irni a dolgait.

    4. nullas szamjegyek

    Gondold vegig, hogy mit ir ki ez az ezresnel kisebb helyiertekeken, ha mondjuk 1000-et konvertalsz at vele :)

    5. Az else ag

    Ha legalabb ketjegyu a szam, akkor nem fogja kiirni az egyes helyierteku szamokat

    6. Memoriafelszabaditas

    Ha azt akarod, hogy a hivo lassa is, hogy mit irtal, akkor semmikeppen se szabaditsd fel azt a memoriat, amit eppen vissza akarsz adni neki.
    A freenek hiba eseten lenne ertelme (mivel akkor nem adnad neki vissza a romai pointert, igy "elveszne" az a memoria (memory leak)), de itt mondjuk jobb, ha csak akkor foglalod le, ha mar eldontotted, hogy at tudod konvertalni a szamot.

    Igy hirtelen ennyi.

    DRM is theft

Új hozzászólás Aktív témák