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

  • maszat

    senior tag

    válasz szilu84 #327 üzenetére

    Felhasználva a forrásodat elkészítettem egy másik verziót:

    char *feladat(char *str){
    char *uj=(char*)malloc(sizeof(char)*(strlen(str)*1.2));
    int i=0;
    int ujszohossz=0;
    int egyesek=0;
    for(i=0; i<strlen(str); i++){
    uj[i+ujszohossz]=str[i];
    if(str[i]=='1'){
    egyesek++;
    if(egyesek == 5){
    egyesek = 0;
    ujszohossz++;
    uj[i+ujszohossz]='0';
    }
    } else {
    egyesek=0;
    }
    }
    return uj;
    }

    Működése:
    Létrehozza a célszónak megfelelő karaktertömböt. Külön megvizsgálva lehetett volna pontosan akkorát létrehozni, mint amekkora kell, de hirtelen ez is jó, elvégre max 20%-al lesz hoszabb a szó.
    Betűnként olvassa a szót, és számolja az egymásutáni 1-eseket. Ha megvan az 5, akkor hozzácsapja a 0-t, ha nincs, akkor nullázza a számlálót.
    uj[i+ujszohossz]=str[i]; az ujszohossz változó az eltolás kezelésére szolgál, mikor a 0-t beszúrjuk.
    Így hirtelen kipróbálva működött, de a hibátlan működésért nem vállalok garanciát. :)

    [ Szerkesztve ]

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