Hirdetés

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

  • ttower

    aktív tag

    válasz ViTToRe #2139 üzenetére

    itt a forráskód hogy más is tanulhasson:
    (nem biztos hogy a legjobb, de működik)

    uses crt;
    var s:string; {a beadott szöveg}
    c_s:string; {a kódolt szöveg}
    c:char; {a billentyűzetről beolvasott karakter}
    p:byte; {a kurzor pozíciója}
    hany:byte; {eltolandó karakterszám}

    function cesar(s:string; hany:byte):string;
    var loop:byte;
    eltolando:byte;
    uj:byte;
    begin
    for loop:=1 to length(s) do
    if s[loop] in [#65..#90,#97..#122] then {megnézi hogy az adott karakter betű-e}
    begin
    eltolando:=hany mod 25; {eltolja a betűket}
    uj:=ord(s[loop])+eltolando;
    if uj=91 then uj:=65;
    if uj=123 then uj:=97;
    s[loop]:=chr(uj);
    end;
    cesar:=s; {funkció visszatérési értéke az új string}
    end;

    begin
    clrscr;
    writeln ('Hány karakterrel tolja el a szöveget?');
    readln (hany);
    clrscr;
    p:=1;
    repeat
    c:=readkey; {beolvas egy karaktert a billentyűzetről}
    if c<>#13 then {ha nem enter akkor lefut a kiértékelés}
    begin
    if c in [#32..#90,#97..#122] then {ha nem speciális karater, bekerül a szövegbe}
    begin
    insert (c,s,p);
    inc(p);
    end;

    if c=#8 then {ha backspace, törli a karaktert}
    begin
    s:=copy (s,1,p-2)+copy (s,p,length(s));
    if p>1 then dec (p);
    end;

    if c=#0 then {ha a karakter #0 akkor megnézi mi a második része}
    begin
    c:=readkey;
    case c of
    #75: if p>1 then dec(p); {ha a jobbra nyíl a kurzor jobbra megy}
    #77: if p<length(s)+1 then inc(p); {ha a balra nyíl a kurzor balra megy}
    #83: s:=copy (s,1,p-1)+copy (s,p+1,length(s)); {ha delet törli a karaktert}
    end;
    end;

    clrscr; {törtli a képernyő tartalmát}
    gotoxy (1,1); {a kurzort a jobb felső sarokba állítja}
    writeln (s); {szöveg kiírása}
    gotoxy (1,2); {a kurzort második sor elejére állítja}
    writeln (cesar(s,hany)); {a kódolt szöveg kiírása}
    gotoxy (p,1); {kurzor pozícionálása}
    c:=#255;
    end;
    until c=#13; {kilépés ha entert ütöttünk le}
    end.

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