szyfr cezara - -problem

0

polecenie :Program przyjmuje z klawiatury lancuch
znakow zakonczony enterem i szyfruje tekst odejmujac
od kodu Asci wartosc n (szyfr cezara).

program szyfrcezara;
uses crt;
var
k:integer; {licznik szyfrowania}
a: string[5]; {lancuch przyjmujacy 5 znakow}
begin
k:=3;
readln(a);
for a[1] to a[5] do {od 1 do 5 znaku uzyskaj kod asci}
chr(ord(a));
for a[1] to a[5] do {od 1 do 5 znaku odejmij od kodu licznik}
write(a-k); {wypisz zaszyfrowany tekst}

end.
{
bledy: type mismatch
operator is not overloaded
illegal expression
illegal expression}

mam problem z petlami oraz z wyciagnieciem wartosci ascii ze znakow prosze o pomoc

ten program ma wyciagac wartosc znaku ascii i dodac powiedzmy 3 i zastapic znak stary nowym zaszyfrowanym

1

Wpisz "kurs paskala" w google i przeczytaj parę stron.
Nawet na tym forum nie poszukałeś: Cezar poprawka

0
     for a[1] to a[5] do {od 1 do 5 znaku uzyskaj kod asci}
      chr(ord(a));

Perełka :D

A niby czemu nie od np.a[-128934761t2394] do a[23923420346982]?


Lektura na dziś:
-pętle
-łańcuchy

0
wladek17 napisał(a)

mam problem z petlami oraz z wyciagnieciem wartosci ascii ze znakow prosze o pomoc

Masz problem, bo słabo znasz odpowiednie do tego celu funkcje (a raczej nie znasz w ogóle);

Przede wszystkim zapoznaj się z funkcjami takimi jak Length, Ord i Chr; Poucz się trochę pętli i napisz to według kilku kroków:

  • pobierz łańcuch z klawiatury,
  • sprawdź, czy nie jest pusty,
  • ustaw pętlę od pierwszej literki do ostatniej (wykorzystując funkcję Length),
  • w każdym przejściu pętli zmień numer ASCII znaku o indeksie pętli (wykorzystaj Ord i Chr),
  • wyświetl zakodowany tekst;
    Możesz napisać sobie także funkcję, która przyjmnie jako parametr łańcuch oraz klucz, zaszyfruje go po czym zwróci gotowy łańcuch;

Błąd masz w tych dwóch linijkach:

chr(ord(a));
{...}
write(a-k);

Zastanów się dlaczego;

1 użytkowników online, w tym zalogowanych: 0, gości: 1