Шифр Цезаря. Не шифровать знаки препинания и другие символы - Visual Basic .NET
Формулировка задачи:
Здравствуйте! Помогите, написала вот, только нужно, чтоб знаки препинания и другие символы, отличные от строчных или прописных букв русского алфавита, не шифровались. А они у меня все удаляются.
Листинг программы
- Public Class Form1
- Const alfavit As String = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
- Const sdvig As Integer = 3
- Const osdvig As Integer = -3
- Private Function cs(ByVal s As String, ByVal sdvig As Integer) As String
- Dim i As Integer
- cs = ""
- For i = 1 To Len(s)
- cs &= cc(Mid(s, i, 1), sdvig)
- Next
- End Function
- Private Function ocs(ByVal s As String, ByVal sdvig As Integer) As String
- Dim i As Integer
- ocs = ""
- For i = 1 To Len(s)
- ocs &= cc(Mid(s, i, 1), osdvig)
- Next
- End Function
- Private Function cc(ByVal c As Char, ByVal sdvig As Integer) As String
- cc = ""
- If InStr(alfavit, c) <> 0 Then Return Mid(alfavit, ((InStr(alfavit, c) - 1 + 2 * sdvig + Len(alfavit)) Mod Len(alfavit) + 1), 1)
- End Function
- Private Sub ОткрытьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ОткрытьToolStripMenuItem.Click
- OpenFileDialog1.Filter = "Текстовый документ (*.txt)|*.txt|Документ Microsoft Word 97–2003 (*.doc)|*.doc|All files (*.*)|*.*"
- If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
- TextBox1.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog1.FileName, System.Text.Encoding.Default)
- End If
- End Sub
- Private Sub ЗашифроватьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ЗашифроватьToolStripMenuItem.Click
- TextBox1.Text = cs(TextBox1.Text, sdvig)
- End Sub
- Private Sub СохранитьКакToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СохранитьКакToolStripMenuItem.Click
- Dim myStream
- Dim saveFileDialog1 As New SaveFileDialog()
- saveFileDialog1.Filter = "txt files (*.txt)|*.txt|Документ Microsoft Word 97–2003 (*.doc)|*.doc|All files (*.*)|*.*"
- saveFileDialog1.FilterIndex = 2
- saveFileDialog1.RestoreDirectory = True
- If saveFileDialog1.ShowDialog() = DialogResult.OK Then
- myStream = saveFileDialog1.OpenFile()
- If (myStream IsNot Nothing) Then
- myStream.Close()
- End If
- End If
- End Sub
- Private Sub РасшифроватьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles РасшифроватьToolStripMenuItem.Click
- TextBox1.Text = ocs(TextBox1.Text, sdvig)
- End Sub
- Private Sub ЗакрытьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ЗакрытьToolStripMenuItem.Click
- End
- End Sub
- End Class
Я уже смотрела все темы. попробовала несколько вариантов. С таким вариантом решения нет.
Решение задачи: «Шифр Цезаря. Не шифровать знаки препинания и другие символы»
textual
Листинг программы
- Private Function cc(ByVal c As Char, ByVal sdvig As Integer) As String
- cc = ""
- If InStr(alfavit, c) <> 0 Then
- Return Mid(alfavit, ((InStr(alfavit, c) - 1 + 2 * sdvig + Len(alfavit)) Mod Len(alfavit) + 1), 1) 'если символ есть в алфавите
- Else
- Return c ' если символа нет в алфавите, то возвращается исходный символ
- End If
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д