Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2014, 06:42   #1
max75025
Новичок
Джуниор
 
Регистрация: 20.12.2014
Сообщений: 3
По умолчанию индекс находится вне границ массива (паскаль)

задание:зашифровать слово методом сдвига, но у меня не получается, при попытке зашифровать выдает ошибку, что не правильно?
Код:
program merlin;
uses crt;
var
str,res:String;
n,k,k1,i,g:Integer;
procedure sh(str:String; n,k:Integer; var otv:String );{сдесь мы шифруем наше слово по паролю}
	var
	i,ch,z:Integer;
	s:Char;
begin
	for i:=1 to n do
	begin
		ch:=ord(str[i]);
		z:=ch+k;
		s:=chr(z);
		otv[i]:=s;
	end;
	writeln;
end;
procedure desh(n,k1:integer; r:String);{сдесь расшифровываем наше слово по паролю}
	var
	z,x,i:integer;
	b:String;
	begin
	for i:=1 to n do
	begin
		x:=ord(r[i]);
		z:=x-k1;
		b:=chr(z);
		write (z);
	end;
	end;
begin
	writeln('vvedite vashe slovo');
	read(str);
	n:=length(str);
	writeln('vvedite parol 1..9');
	read(k);
	sh(str,n,k,res);
	writeln(res);
	writeln('hotite rashifrovat? 1- yes or 2-no');
	read(g);
	if g=1 then
	begin
		writeln('vvedite parol 1..9');
		read(k1); 
		desh (n,k1,res)
	end
	else  
	writeln('jmak...');
repeat until KeyPressed;
end.
max75025 вне форума Ответить с цитированием
Старый 20.12.2014, 07:03   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Я нашел:
Цитата:
procedure sh(str:String; n,k:Integer; var otv:String );{сдесь мы шифруем наше слово по паролю}
Цитата:
otv[i]:=s;
По умолчанию otv = '', а цикл начинается с 1!

А что означает в процедуре desh? Что оно дает?
Код:
b:=chr(z);
write (z);
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 20.12.2014 в 07:08.
newerow1989 вне форума Ответить с цитированием
Старый 20.12.2014, 07:24   #3
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

SetLength(otv,Length(str));
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 20.12.2014, 07:56   #4
max75025
Новичок
Джуниор
 
Регистрация: 20.12.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
SetLength(otv,Length(str));
можете более подробно пояснить?
max75025 вне форума Ответить с цитированием
Старый 20.12.2014, 07:57   #5
max75025
Новичок
Джуниор
 
Регистрация: 20.12.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Я нашел:


По умолчанию otv = '', а цикл начинается с 1!

А что означает в процедуре desh? Что оно дает?
Код:
b:=chr(z);
write (z);
эта процедура должна производить обратный эффект
max75025 вне форума Ответить с цитированием
Старый 20.12.2014, 08:06   #6
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

То, что я привел - это действительно ошибки. Их нужно исправить! А выражение
Цитата:
b:=chr(z);
write (z);
не имеет смысла
Смотри исправления:
Код:
procedure sh(str:String; n,k:Integer; var otv:String );{сдесь мы шифруем наше слово по паролю}
	var
	i,ch,z:Integer;
	s:Char;
begin
           SetLength(otv,n);
	for i:=1 to n do
	begin
		ch:=ord(str[i]);
		z:=ch+k;
		s:=chr(z);
		otv[i]:=s;
	end;
	writeln;
end;
procedure desh(n,k1:integer; r:String);{сдесь расшифровываем наше слово по паролю}
	var
	z,x,i:integer;
	b:String;
	begin
	for i:=1 to n do
	begin
		x:=ord(r[i]);
		z:=x-k1;
		b:=chr(z);
		write (b);
	end;
	end;
При таком раскладе у меня заработало
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 20.12.2014 в 08:16.
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Индекс находился вне границ массива Pikovaya_dama C# (си шарп) 14 02.12.2014 17:13
Индекс находился вне границ массива Pikovaya_dama C# (си шарп) 2 28.11.2014 17:37
Индекс находился вне границ массива. Maks3 C# (си шарп) 3 23.11.2014 21:54
Индекс находился вне границ массива. banan4ik Помощь студентам 1 30.05.2013 02:25
[C#] Индекс находился вне границ массива JonMagon Помощь студентам 12 22.01.2012 23:06