Ahojte potreboval by som pomoct s ulohou do skoly.
Zadanie prikladu:
Je dany textovy subor a prirodzene cislo K. Zasifrujte dany text tak, že kazde velke pismeno nahradite pismenom, ktore je v abecede o K znakov dalej. Tento posun v abecede uvazujte cyklicky (t.j. za Z nasleduje A). Ostatne znaky textu preneste do vysledneho suboru bezo zmien.
Ja som spravil nieco ale ide o to ze problem nastane vtedy ked mam napr. posun znakov K=2 a mam v danom textovom subore napr. slovo Zastava ---- mno lenze po pismene Z ide v ASCII tabulke nejaky cudny znak ale ja potrebujem mat za tym pismeno A posunute o dva miesta teda nasledne by po Z malo ist o dva miesta pismeno B.
Ucim sa pascal asi tak 3 mesiace takze bol by som rad kebyze mi niekto kto sa vyzna pomoze
Dakujem
Tu davam co som zatial spravil:
Citácia:
PROGRAM SIFRA; (*nazov programu*)
VAR POMOCNA1,POMOCNA,Y,K,E,M:INTEGER; (*deklaracia premennych*)
S,P:FILE OF CHAR;
NAZOV,NAZOVO:STRING;
VYSLEDOK,X,Z,A:CHAR;
BEGIN (*zaciatok programu*)
WRITELN ('ZADAJ PRIRODZENE CISLO'); (*urcenie prir.cisla na posuvanie*)
READLN (K);
WRITELN ('ZADAJ NAZOV A CESTU K SUBORU');
READLN (NAZOV);
ASSIGN (S,NAZOV);
RESET (S);(*nacitanie existuj.suboru*)
WRITELN ('ZADAJ NAZOV ZASIFROVANEHO SUBORU');
READLN (NAZOVO);
ASSIGN (P,NAZOVO);
REWRITE (P);(*vytvorenie noveho suboru*)
REPEAT (*cyklus opakovania az do skoncenia daneho suboru*)
READ (S,X);
IF ((ORD(X)>=65) AND (ORD(X)<=90)) THEN BEGIN (*pre velke pismena podmienka*)
Y:=ORD(X);
K:=K;
POMOCNA:=Y+K;
VYSLEDOK:=CHR (POMOCNA);
WRITE (P,VYSLEDOK);
END;
IF ((ORD(X)>=97) AND ((ORD(X)<=122))) THEN BEGIN ;(*pre male pismena podmie.*)
WRITE (P,X);
END;
IF (ORD(X)<65) THEN (*podmienka pre znaky mensie ako ordina.hodnota 65*)
WRITE (P,X);
IF (ORD(X)>=123) AND (ORD(X)<=255) THEN (*podmie. pre znaky vacsie ako ordinalita 123 a az do 255*)
WRITE (P,X)
UNTIL EOF(S); (*koniec skoncenia cyklu*)
CLOSE (S);(*zatvorenie daneho suboru na citanie*)
CLOSE (P); (*zatvorenie daneho suboru na zapis*)
WRITELN ('HOTOVO!');
WRITELN ('ZADAJTE LUBOVOLNU KLAVESU PRE KONIEC PROGRAMU');
READLN;
END. (*koniec programu*)