Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Program funguje podle ulohy, ale když zadavam do Codexu tak dostavam chybu
Jailing user 'codex-prg' (UID 1003, GID 1003) into directory '/home/codex-prg/workers/eval3/jail'
Initializing... OK
Preparing sandbox... running locally (INSECURE), OK
Finding source... ./inbox/source.pas
Compiling... FAILED: Free Pascal Compiler version 2.4.0-0 [2009/12/21] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Linux for i386
Compiling 60-2.pas
60-2.pas(21,12) Error: Ordinal expression expected
60-2.pas(25,4) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)
Test 1... <init> CE:Compile error
Test 2... <init> CE:Compile error
Test 3... <init> CE:Compile error
Test 4... <init> CE:Compile error
Test 5... <init> CE:Compile error
Test 6... <init> CE:Compile error
procedure Crypt(var s: String; k: String; Encode: Boolean); var i, j, p: Integer; begin j:=0; p:=-1+2*Ord(Encode); for i:=1 to Length(k) do Dec(k[i],Ord('A')-1); for i:=1 to Length(s) do if s[i] in ['A'..'Z'] then begin s[i]:=Chr(Ord('A')+ (Ord('A')+Ord(s[i])+p*(Ord(k[j mod Length(k)+1]))) mod (Ord('Z')-Ord('A')+1)); Inc(j); end; end; var s, k: String; o: string; begin ReadLn(o); ReadLn(k); ReadLn(s); if o in ['sifrovat','desifrovat'] then begin Crypt(s,k,o='sifrovat'); WriteLn(s); end; end.
Offline
Uloha
Napište program na šifrování a dešifrování textu tzv. Césarovou šifrou. Na prvním řádku dostane program buď řetězec 'sifrovat' nebo řetězec 'desifrovat', podle toho, zda bude program šifrovat nebo dešifrovat. Na druhém řádku bude klíč a na třetím bude samotný text k šifrování/dešifrování.
Text je šifrován posunem písmenek v abecedě podle klíče. Klíč je slovo tvořené písmeny 'A' - 'Z', 'A' znamená posun o 1 písmeno, 'B' znamená posun o 2 písmena, atd. až 'Z' znamená posun o 26 písmen. Posun je chápán cyklicky, čili po písmenu Z následuje opět písmeno A. Pokud je text delší než klíč, tak se po dosažení konce klíče pokračuje opět od začátku klíče.
Klíč je řetězec znaků tvořený pouze písmeny 'A' až 'Z' a vejde se do datového typu string.
Text je řetězec libovolně dlouhý (nemusí se tedy vejít do stringu) a obsahuje pouze znaky 'A' - 'Z' a ' ' (mezera). Mezery ponechte mezerami:-)
Výstupem programu je právě jeden řádek se zašifrovaným/dešifrovaným textem.
Příklad 1:
Vstup:
sifrovat
AAB
SIFRUJI SIFRU
Výstup:
TJHSVLJ TKGSW
Příklad 2:
Vstup:
desifrovat
AAB
TJHSVLJ TKGSW
Výstup:
SIFRUJI SIFRU
Offline
Zadal jsem to takhle ale ted mam takove cyby
Jailing user 'codex-prg' (UID 1003, GID 1003) into directory '/home/codex-prg/workers/eval3/jail'
Initializing... OK
Preparing sandbox... running locally (INSECURE), OK
Finding source... ./inbox/source.pas
Compiling... OK
Test 1... <init> <run> <check> OK:OK (1 points)
Test 2... <init> <run> <check> OK:OK (1 points)
Test 3... <init> <run> <check> OK:OK (248 points)
Test 4... <init> <run> <check> OK:OK (250 points)
Test 5... <init> <run> <check> WA:Wrong answer
Test 6... <init> <run> <check> WA:Wrong answer
procedure Crypt(var s: String; k: String; Encode: Boolean); var i, j, p: Integer; begin j:=0; p:=-1+2*Ord(Encode); for i:=1 to Length(k) do Dec(k[i],Ord('A')-1); for i:=1 to Length(s) do if s[i] in ['A'..'Z'] then begin s[i]:=Chr(Ord('A')+ (Ord('A')+Ord(s[i])+p*(Ord(k[j mod Length(k)+1]))) mod (Ord('Z')-Ord('A')+1)); Inc(j); end; end; const sifrovat='sifrovat'; desifrovat='desifrovat'; var s, k: String; o: string; begin ReadLn(o); ReadLn(k); ReadLn(s); if (o=sifrovat) or (o=desifrovat) then begin Crypt(s,k,o=sifrovat); WriteLn(s); end; end.
Offline
No, to nevím. Řešil jsem jen syntaxi.
Offline
Stránky: 1