Hirdetés

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

  • Gyuri16
    senior tag

    Üdv!
    Újabb problémával jelentkezem, feladat következő:
    Írjon cenzúrázó programot. A program beolvas egy mondatot, majd egy tiltott karaktersorozatot. A mondatban kicseréli a karaktersorozat minden előfordulását 3 csillag karakterre(cenzúrázott szó helyett 3 csillagot rajzol). Végül kiírja a cenzúrázott mondatot.

    A feladat megoldása során csak gets, scanf, és a printf függvények használhatók. NEM szabad előre megírt stringkezelő függvényeket használni.

    Szokás szerint elkezdtem megírni :D, de ezt a részt hogy a beolvasott tiltott szó helyére 3 csillagot tegyen nem tudom megcsinálni, megírtam úgy hogy minden karakterét a szónak csillagra cseréli, de ez ugye így nem jó.

    #include <stdio.h>

    int main(){
    int i,j,szohossz,mondathossz;
    char szo[20],mondat[100];

    printf("mondat:");
    gets(mondat);
    printf("szo:");
    scanf("%s", szo);

    i=0;
    while(szo[i]!=0){
    i++;
    }
    szohossz=i;

    i=0;
    while(mondat[i]!=0){
    i++;
    }
    mondathossz=i;

    for(i=0;i<=mondathossz-szohossz;i++){
    for(j=0;j<szohossz;j++){
    if(szo[j]!=mondat[i+j])
    break;
    }
    if(j==szohossz){
    for(j=0;j<szohossz;j++){
    mondat[i+j]='*';
    }
    i=i+szohossz-1;
    }
    }

    printf("%s\n", mondat);


    system("PAUSE");
    return 0;
    }

    Köszönöm :R

    azon a ponton amikor mar tudod, hogy cenzurazni kell, kovetkezot csinalod:
    -ha szohossz < 3 akkor odebbtolod* a string tobbi reszet annyi hellyel jobbra, hogy beferjen a 3 csillag
    -ha szohossz >= 3 akkor odairsz 3 csillagot es szohossz-3al balra tolod a maradek szoveget

    * odebbtolas azt jelenti, hogy minden egyes betut x hellyel odebb masolsz. vigyazni kell, hogy a string eleg nagy legyen. mivel tobb hellyel kell mozgatni hatulrol kezdenem, tehat ha pl jobbra kell eltolni, akkor eloszor az utolso elemet tennem x hellyel jobbra, aztan az utolso elottit, stb. ha pedig ballra akkor eloszor az elsot.. meg nem art odafigyelni, hogy a string veget jelzo 0at is masold. (ajanlom fuggvenykent megirni, hogy tudd egyszeruen kulon tesztelni)

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