Új hozzászólás Aktív témák
-
maszat
senior tag
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
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!