Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Шфир Цезаря

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Проблема с дешифрацией
Bang
Отправлено: 19 Февраля, 2016 - 17:06:37
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Февр. 2016  


Помог: 0 раз(а)




Всем привет, я новичок в php, и иногда пытаюсь писать некоторые программки. В этот раз выбрал шифр Цезаря ( это шифр, в котором каждый символ в тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите; например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее). Прога должна была шифровать и дешифровать слова, но возникла проблемка при дешифрации. Например, если взять букву "А" и дешифровать со сдвигом в 1 шаг, т.е. должна появится буква "Z" - всплывает ошибка. Т.е. массив не просматривается заново, а останавливается на букве "А".
CODE (htmlphp):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.         <title>Шифр Цезаря</title>
  6.         <link href="Style.css" rel="stylesheet">
  7.     </head>
  8.     <body>
  9.         <div class="body">
  10.                 <div class="sa">
  11.                <form action='fail6.php' method='POST'>
  12.                <H1 align="center">Введите слово, для шифрования/дешифрования!</H1>
  13.                     <div class="1" align="center">
  14.                     <i>Сообщение может содержать только буквы английского алфавита*</i><br><br>
  15.                     <input type='text' name='text' size=100>
  16.                     <H1 align="center">Введите количество шагов, для сдвига!</H1>
  17.                     <i>Доступны только числа в диапазоне от 1 до 25*</i><br><br>
  18.                     <input type='number' name='number' min='1' max='25'><br><br>
  19.                     <input type='Submit' value='Зашифровать' name='but'>
  20.                     <input type='Submit' value='Расшифровать' name='but2'>
  21.                     </div>
  22.             </div>
  23.          </div>
  24.         </form>
  25.  
  26.     </body>
  27. </html>

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. if(isset($_POST['but']))
  3. {        
  4.         $name=$_POST['text'];
  5.         $num=$_POST['number'];
  6.        
  7.         if(preg_match ('@[A-z]@u',$name) and preg_match ('/[0-9]/',$num))
  8.                  {
  9.                        
  10.                         $X=strtoupper($_POST['text']); //Преобразует строку в верхний регистр
  11.                         $alph=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  12.                         $N=count($alph);//Считает кол-во букв
  13.                         $b="";
  14.                         $n=strlen($X); //Возвращает длину строки
  15.                  
  16.                         for($i=0;$i<$n;$i++)
  17.                         for($j=0;$j<$N;$j++)
  18.                         {
  19.                         if($X[$i]==$alph[$j])
  20.                                 {
  21.                                 $b= $b . $alph[ ($j+$num) % $N];
  22.                                 }
  23.                         }
  24.                  
  25.                         print "Зашифрованное слово:\t". $b ;
  26.                  }
  27.         else {
  28.                         print "Не правильное слово для кодирования! ";
  29.                  }
  30. }
  31. if(isset($_POST['but2']))
  32. {        
  33.         $name=$_POST['text'];
  34.         $num=$_POST['number'];
  35.        
  36.         if(preg_match ('@[A-z]@u',$name) and preg_match ('/[0-9]/',$num))
  37.                  {
  38.                        
  39.                         $X=strtoupper($_POST['text']); //Преобразует строку в верхний регистр
  40.                         $alph=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  41.                         $N=count($alph);//Считает кол-во букв
  42.                         $b="";
  43.                         $n=strlen($X); //Возвращает длину строки
  44.                  
  45.                         for($i=0;$i<$n;$i++)
  46.                         for($j=0;$j<$N;$j++)
  47.                         {
  48.                         if($X[$i]==$alph[$j])
  49.                                 {
  50.                                 $b= $b . $alph[ ($j-$num) % $N];
  51.                                 }
  52.                         }
  53.                  
  54.                         print "Расшифрованное слово:\t". $b ;
  55.                  }
  56.         else {
  57.                         print "Не правильное слово для кодирования! ";
  58.                  }
  59. }
  60. ?>
 
 Top
andrewkard
Отправлено: 19 Февраля, 2016 - 18:50:41
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Посмотрите про current(), next(), reset()
http://php.net/manual/ru/function.reset.php
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB