1 / 1 / 0
Регистрация: 23.04.2012
Сообщений: 7
1

Реализовать Шифр Цезаря

23.04.2012, 16:05. Показов 12225. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нам в школе задали написать данную прогу (хоть Visual Basic изучали лишь 2-3 урока, потом просто писание программ пошло).
У меня сейчас программа выглядит так
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Public Class Form1
    Dim a, a2 As String
    Dim b, b2 As Byte
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        a = InputBox("Введите слово", "ввод слова")
        Select Case a
            Case "а"
                b = 1
            Case "б"
                b = 2
            Case "в"
                b = 3
            Case "г"
                b = 4
            Case "д"
                b = 5
            Case "е"
                b = 6
            Case "ё"
                b = 7
            Case "ж"
                b = 8
            Case "з"
                b = 9
            Case "и"
                b = 10
            Case "й"
                b = 11
            Case "к"
                b = 12
            Case "л"
                b = 13
            Case "м"
                b = 14
            Case "н"
                b = 15
            Case "о"
                b = 16
            Case "п"
                b = 17
            Case "р"
                b = 18
            Case "с"
                b = 19
            Case "т"
                b = 20
            Case "у"
                b = 21
            Case "ф"
                b = 22
            Case "х"
                b = 23
            Case "ц"
                b = 24
            Case "ч"
                b = 25
            Case "ш"
                b = 26
            Case "щ"
                b = 27
            Case "ъ"
                b = 28
            Case "ы"
                b = 29
            Case "ь"
                b = 30
            Case "э"
                b = 31
            Case "ю"
                b = 32
            Case "я"
                b = 33
        End Select
        b2 = b + 3
        If b2 = 34 Then
            b2 = 1
        End If
        If b2 = 35 Then
            b2 = 2
        End If
        If b2 = 36 Then
            b2 = 3
        End If
        Select Case b2
            Case b2 = 1
                a2 = "а"
            Case b2 = 2
                a2 = "б"
            Case b2 = 3
                a2 = "в"
            Case b2 = 4
                a2 = "г"
            Case b2 = 5
                a2 = "д"
            Case b2 = 6
                a2 = "е"
            Case b2 = 7
                a2 = "ё"
            Case b2 = 8
                a2 = "ж"
            Case b2 = 9
                a2 = "з"
            Case b2 = 10
                a2 = "и"
            Case b2 = 11
                a2 = "й"
            Case b2 = 12
                a2 = "к"
            Case b2 = 13
                a2 = "л"
            Case b2 = 14
                a2 = "м"
            Case b2 = 15
                a2 = "н"
            Case b2 = 16
                a2 = "о"
            Case b2 = 17
                a2 = "п"
            Case b2 = 18
                a2 = "р"
            Case b2 = 19
                a2 = "с"
            Case b2 = 20
                a2 = "т"
            Case b2 = 21
                a2 = "у"
            Case b2 = 22
                a2 = "ф"
            Case b2 = 23
                a2 = "х"
            Case b2 = 24
                a2 = "ц"
            Case b2 = 25
                a2 = "ч"
            Case b2 = 26
                a2 = "ш"
            Case b2 = 27
                a2 = "щ"
            Case b2 = 28
                a2 = "ъ"
            Case b2 = 29
                a2 = "ы"
            Case b2 = 30
                a2 = "ь"
            Case b2 = 31
                a2 = "э"
            Case b2 = 32
                a2 = "ю"
            Case b2 = 33
                a2 = "я"
                Label1.Text = a2
        End Select
    End Sub
End Class
Больше всего нравиться, что я в некоторой степени понимаю, что на целые слова оно не будет действовать. Да и сама прога нормально работает до момента присвоение цифре, буквы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2012, 16:05
Ответы с готовыми решениями:

Шифр Цезаря, отладить программу
помогите отладить программку, написала код, но что-то не так Public Class Form1 Private Sub...

Шифр Цезаря - программа зацикливается
Добрый вечер, задача была сделать программу, которая шифрует введенный текст введенным ключом, и...

Как вставить в шифр цезаря генератор псевдослучайных чисел?
как вставить в шифр цезаря генератор псевдослучайных чисел?? код прилагаю Public Class Form1 ...

Шифр Цезаря. Не шифровать знаки препинания и другие символы
Здравствуйте! Помогите, написала вот, только нужно, чтоб знаки препинания и другие символы,...

16
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
23.04.2012, 22:49 2
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim bukva As Object
        Dim i As Object
        Dim keyx As Object
        TextBox2.Text = ""
        keyx = TextBox3.Text 'Число от 0 - 255
        For i = 1 To Len(TextBox1.Text)
            bukva = keyx + Asc(Mid(TextBox1.Text, i, 1))
            If bukva > 255 Then bukva = bukva - 255
            TextBox2.Text = TextBox2.Text & Chr(bukva)
        Next
    End Sub
1
Крутой форумчанин
154 / 154 / 8
Регистрация: 09.01.2011
Сообщений: 298
24.04.2012, 00:03 3
Лучший ответ Сообщение было отмечено как решение

Решение

VB.NET
1
2
3
4
5
        Dim strEncrypted As String = ""
        For Each c In txtPlain.Text
            strEncrypted = strEncrypted & Chr(Asc(c) + 1)
        Next
        txtEncrypted.Text = strEncrypted
Стоит добавить пару IF-ов для граничных значений, но для наглядности не стал.

txtPlain - текстбокс с текстом в незашифрованном виде
txtEncrypted - результат "шифрования".

Добавлено через 8 минут
Цитата Сообщение от ZuMiks Посмотреть сообщение
VB.NET
1
2
3
        Dim bukva As Object
        Dim i As Object
        Dim keyx As Object
Почему As Object то?!)
3
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
24.04.2012, 00:13 4
Цитата Сообщение от cergew Посмотреть сообщение
Почему As Object то?!)
А что ты предлагаешь? По другому ни как не работает!
0
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
24.04.2012, 00:18 5
ZuMiks, а As String ??
0
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
24.04.2012, 00:23 6
edward_freedom, As String тоже нельзя, так как в этой строчке
VB.NET
1
 bukva = keyx + Asc(Mid(TextBox1.Text, i, 1))
стоит знак "+" и вылезет ошибка Приведение строки "" к типу "Double" является недопустимым.
0
Памирыч
24.04.2012, 06:11
  #7

Не по теме:

ZuMiks, а как бы ты на шарпе писал такое? Там такие "неявные преобразования" не канают :D

1
ZuMiks
24.04.2012, 10:21
  #8

Не по теме:

Памирыч, Пришлось бы придумать что ни то другое :)

0
1 / 1 / 0
Регистрация: 23.04.2012
Сообщений: 7
25.04.2012, 18:20  [ТС] 9
ZuMiks,
Типо там, где bukva ужно подставить все буквы алфавита, а там, где keyx что подставлять?
0
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
25.04.2012, 18:34 10
Цитата Сообщение от Naron Посмотреть сообщение
Типо там, где bukva ужно подставить все буквы алфавита, а там, где keyx что подставлять?
Не, подставлять ни что не надо, keyx - это число на которое надо сдвигать слово!
Лучше используй метод который привел cergew:
VB.NET
1
2
3
4
5
6
7
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strEncrypted As String = ""
        For Each c In TextBox1.Text
            strEncrypted = strEncrypted & Chr(Asc(c) + 1)
        Next
        TextBox1.Text = strEncrypted
    End Sub
1
1 / 1 / 0
Регистрация: 23.04.2012
Сообщений: 7
25.04.2012, 18:54  [ТС] 11
Всё. Я всё понял. Типо textbox1 для ввода шифрованного, нешифрованного текста, textbox2 для вывода, textbox3 - сдвиг.
Единственный минус, что при значении сдвига более 32, выходят левые символы.
Есть ли способ зациклить или поставить в условие так, что бы при букве А - Я со сдвигом от 1 до 32 снова появлялась буква алфавита.

Добавлено через 2 минуты
ZuMiks,
Как раз сейчас собирался его способ опробовать.

Добавлено через 5 минут
cergew, Как только выбираю букву я или слово имеющее букву я, программа выдаёт ошибку.
0
Крутой форумчанин
154 / 154 / 8
Регистрация: 09.01.2011
Сообщений: 298
25.04.2012, 21:08 12
Цитата Сообщение от Naron Посмотреть сообщение
cergew, Как только выбираю букву я или слово имеющее букву я, программа выдаёт ошибку.
Там в моём сообщении написано, что надо добавить пару IF-ов для граничных значений ))
1
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
25.04.2012, 21:30 13
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim bukva As String
        Dim keyx As String
        If TextBox3.Text = "" Then
            Exit Sub
        End If
        TextBox2.Text = ""
        keyx = TextBox3.Text 'Число от 0 - 255
        For i = 1 To Len(TextBox1.Text)
            bukva = keyx + Asc(Mid(TextBox1.Text, i))
            If bukva > 255 Then bukva = bukva - 32
            TextBox2.Text = TextBox2.Text & Chr(bukva)
        Next
    End Sub
Вот так будет норм.

Добавлено через 18 минут
Еще после этой строчки:
VB.NET
1
 keyx = TextBox3.Text 'Число от 0 - 255
Допиши вот это:
VB.NET
1
2
3
        If keyx > 255 Then
            Exit Sub
        End If
1
1 / 1 / 0
Регистрация: 23.04.2012
Сообщений: 7
25.04.2012, 21:44  [ТС] 14
cergew,
Ясн. спасибо.

ZuMiks,
Спасибо.
0
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
25.04.2012, 21:48 15
VB.NET
1
2
3
        If keyx > 255 Then
            Exit Sub
        End If
Замени здесь 255 на 32 а то если ввести число больше 32 вылезет ошибка
1
1 / 1 / 0
Регистрация: 23.04.2012
Сообщений: 7
25.04.2012, 22:12  [ТС] 16
ZuMiks,
Сам додумался на 32 исправить пару минут назад))
У меня прогресс))

Добавлено через 17 минут
ZuMiks,
Ещё раз большое спасибо за помощь))
1
124 / 102 / 5
Регистрация: 25.03.2012
Сообщений: 153
25.04.2012, 22:37 17
Не за что
1
25.04.2012, 22:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2012, 22:37
Помогаю со студенческими работами здесь

Реализовать шифр одиночной перестановки
Всем привет! Нужна срочная помощь в написании программы. Шифр одиночной перестановки (текст...

Реализовать шифр Цезаря
Ребята, помогите, пожалуйста. Шифр Цезаря с ключом К=-5

Как реализовать Шифр Цезаря?
Всем Хай не знаю как доделать шифр цезаря, по правильному пути ли я иду ? я хочу взять ...

Помогите реализовать шифр цезаря
Помогите написать графическую программу, которая шифрует слова шифром Цезаря.Шифр Цезаря — один из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru