Зашифровать исходное предложение используя треугольник Паскаля - C#

Узнай цену своей работы

Формулировка задачи:

C клавиатуры вводится предложение, слова в котором разделены символом ‘_’. Используя треугольник Паскаля зашифруйте исходное предложение по правилу: - Из предложения выделяется слово; - Из треугольника Паскаля выбирается строка с номером равным числу букв в слове; - К-я буква исходного слова заменяется на букву, отстоящую от исходной на число букв, ука-занное в к-м столбце выбранной строки треугольника.

Решение задачи: «Зашифровать исходное предложение используя треугольник Паскаля»

textual
Листинг программы
  1. // Подготовка данных
  2.  
  3. // Факториал
  4. const int MAX = 21;
  5. long[] fact = new long[MAX];
  6. fact[0] = fact[1] = 1;
  7. for (int i=2; i<fact.Length; i++)
  8. {
  9.     fact[i] = checked(i * fact[i-1]);
  10. }
  11.  
  12. // Треугольник Паскаля
  13. var pascalTriangle = new int[MAX][];
  14. for (int n=0; n<MAX; n++)
  15. {
  16.     pascalTriangle[n] = new int[n+1];
  17.     for (int k=0; k<=n; k++)
  18.     {
  19.         checked
  20.         {
  21.             long combination = fact[n] / (fact[k] * fact[n - k]);
  22.             pascalTriangle[n][k] = (int)combination;
  23.         }
  24.     }
  25. }
  26.  
  27. // Шифрование
  28.  
  29. const string ABC = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
  30. string text = "ШИРОКАЯ_ЭЛЕКТРИФИКАЦИЯ_ЮЖНЫХ_ГУБЕРНИЙ_ДАСТ_МОЩНЫЙ_ТОЛЧОК_ПОДЪЁМУ_СЕЛЬСКОГО_ХОЗЯЙСТВА";
  31. WriteLine(text);
  32.  
  33. var sb = new StringBuilder(text.Length);
  34. foreach (string oneWord in text.Split('_'))
  35. {
  36.     int[] pascalRow = pascalTriangle[oneWord.Length-1];
  37.     if (sb.Length > 0) sb.Append("_");
  38.  
  39.     for (int i=0; i<oneWord.Length; i++)
  40.     {
  41.         char ch = oneWord[i];
  42.         int idx = ABC.IndexOf(ch);
  43.         Debug.Assert(idx != -1, string.Format("Letter '{0}' is absent", ch));
  44.  
  45.         ch = ABC[(idx + pascalRow[i]) % ABC.Length];
  46.         sb.Append(ch);
  47.     }
  48. }
  49. text = sb.ToString();
  50. WriteLine(text);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы