Шифр Цезаря. Не шифровать знаки препинания и другие символы - Visual Basic .NET

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

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

Здравствуйте! Помогите, написала вот, только нужно, чтоб знаки препинания и другие символы, отличные от строчных или прописных букв русского алфавита, не шифровались. А они у меня все удаляются.
Листинг программы
  1. Public Class Form1
  2. Const alfavit As String = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
  3. Const sdvig As Integer = 3
  4. Const osdvig As Integer = -3
  5. Private Function cs(ByVal s As String, ByVal sdvig As Integer) As String
  6. Dim i As Integer
  7. cs = ""
  8. For i = 1 To Len(s)
  9. cs &= cc(Mid(s, i, 1), sdvig)
  10. Next
  11. End Function
  12. Private Function ocs(ByVal s As String, ByVal sdvig As Integer) As String
  13. Dim i As Integer
  14. ocs = ""
  15. For i = 1 To Len(s)
  16. ocs &= cc(Mid(s, i, 1), osdvig)
  17. Next
  18. End Function
  19.  
  20. Private Function cc(ByVal c As Char, ByVal sdvig As Integer) As String
  21. cc = ""
  22. If InStr(alfavit, c) <> 0 Then Return Mid(alfavit, ((InStr(alfavit, c) - 1 + 2 * sdvig + Len(alfavit)) Mod Len(alfavit) + 1), 1)
  23. End Function
  24.  
  25. Private Sub ОткрытьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ОткрытьToolStripMenuItem.Click
  26. OpenFileDialog1.Filter = "Текстовый документ (*.txt)|*.txt|Документ Microsoft Word 97–2003 (*.doc)|*.doc|All files (*.*)|*.*"
  27. If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
  28. TextBox1.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName, System.Text.Encoding.Default)
  29. End If
  30. End Sub
  31. Private Sub ЗашифроватьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ЗашифроватьToolStripMenuItem.Click
  32. TextBox1.Text = cs(TextBox1.Text, sdvig)
  33. End Sub
  34. Private Sub СохранитьКакToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СохранитьКакToolStripMenuItem.Click
  35. Dim myStream
  36. Dim saveFileDialog1 As New SaveFileDialog()
  37. saveFileDialog1.Filter = "txt files (*.txt)|*.txt|Документ Microsoft Word 97–2003 (*.doc)|*.doc|All files (*.*)|*.*"
  38. saveFileDialog1.FilterIndex = 2
  39. saveFileDialog1.RestoreDirectory = True
  40. If saveFileDialog1.ShowDialog() = DialogResult.OK Then
  41. myStream = saveFileDialog1.OpenFile()
  42. If (myStream IsNot Nothing) Then
  43. myStream.Close()
  44. End If
  45. End If
  46. End Sub
  47. Private Sub РасшифроватьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles РасшифроватьToolStripMenuItem.Click
  48. TextBox1.Text = ocs(TextBox1.Text, sdvig)
  49. End Sub
  50. Private Sub ЗакрытьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ЗакрытьToolStripMenuItem.Click
  51. End
  52. End Sub
  53. End Class
Я уже смотрела все темы. попробовала несколько вариантов. С таким вариантом решения нет.

Решение задачи: «Шифр Цезаря. Не шифровать знаки препинания и другие символы»

textual
Листинг программы
  1.  Private Function cc(ByVal c As Char, ByVal sdvig As Integer) As String
  2.         cc = ""
  3.         If InStr(alfavit, c) <> 0 Then
  4.             Return Mid(alfavit, ((InStr(alfavit, c) - 1 + 2 * sdvig + Len(alfavit)) Mod Len(alfavit) + 1), 1) 'если символ есть в алфавите
  5.         Else
  6.             Return c ' если символа нет в алфавите, то возвращается исходный символ
  7.         End If
  8.  
  9.     End Function

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


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

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

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

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

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

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