Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 1
Регистрация: 04.12.2012
Сообщений: 202
1

Шифр Цезаря: Как зациклить дешифратор так, чтобы он перебрал все возможные варианты сдвига

22.09.2014, 19:22. Показов 1501. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните пожалуйста, как бы мне зациклить дешифратор так, чтобы он перебрал все возможные варианты сдвига, их как понимаю 31. И как реализовать ввод текста так, чтобы он заранее был вписан, задаю строку string a = "текст", а как это впихнуть...
C#
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace Shifrovanie_Cezar
{
    class Program
    {
        static void Main()
        {
            //Цикл для повтора задачи
            do
            {
                string a = @"D:\Файл_с_тестом.txt"; //Переменная выбора дешифрования
                string s = ""; //Строка, к которой применяется дешифрование
                string result = ""; //Строка - результат дешифрования
                uint shift; //Величина сдвига при дешифровании
                Console.WriteLine("Введите величину сдвига"); //Вывод сообщения на экран
                while (!uint.TryParse(Console.ReadLine(), out shift)) //Считывние величины сдвига
                //Если величина сдвига больше длины алфавита кирилицы
                if (shift > 32)
                    shift = shift % 32;
                
                //Дешифрование
                {
                    s = File.ReadAllText(path, Encoding.Default); //Считывание строки
                    //Выполение дешифрования, цикл по каждому символу строки
                    for (int i = 0; i < s.Length; i++)
                    {
                        if (Convert.ToInt16(s[i]) == 32)
                            result += ' ';
                        if ((Convert.ToInt16(s[i]) >= 1072) && (Convert.ToInt16(s[i]) <= 1103)) //Если буква является строчной
                        {
                            if (Convert.ToInt16(s[i]) - shift < 1072) //Если буква, после сдвига выходит за пределы алфавита
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) - shift + 32);
                            //Если буква может быть сдвинута в пределах алфавита
                            else
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) - shift);
                        }
                        //Если буква является прописной
                        if ((Convert.ToInt16(s[i]) >= 1040) && (Convert.ToInt16(s[i]) <= 1071))
                        {
                            //Если буква, после сдвига выходит за пределы алфавита
                            if (Convert.ToInt16(s[i]) - shift < 1040)
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) - shift + 32);
                            //Если буква может быть сдвинута в пределах алфавита
                            else
                                //Добавление в строку результатов символ
                                result += Convert.ToChar(Convert.ToInt16(s[i]) - shift);
                        }
                    }
                    Console.WriteLine("Дешифрованный текст: "); //Вывод на экран дешифрованной строки
                    Console.WriteLine(result);
                }
                Console.WriteLine("Для выхода из программы нажмите Escape");
            } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2014, 19:22
Ответы с готовыми решениями:

Шифр Цезаря: Как сделать сортировку в шифре, чтобы дешифратор выдал единственно верное решение
Люди, как сделать сортировку в шифре, чтобы дешифратор выдал единственно верное решение Нужно как...

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

Дешифратор Шифр Цезаря
Привет, делаю лабу, написал шифр цезаря вот код: Console.WriteLine(&quot;Введите слово,которое нужно...

Шифр сдвига (Цезаря)
скажите как сделать шифр в кольце 26(для латиницы), т.е. чтобы последняя буква в первую переходила...

0
22.09.2014, 19:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2014, 19:22
Помогаю со студенческими работами здесь

Нужно чтобы функция парсинга искала все возможные варианты, а не только первый
В общем моя задача из кэша оперы, вытащить все данные автозаполнения. Где хранится нашел,...

Зациклить решение системы дифф-уравнений пока есть возможные варианты значений переменных
Есть программа которая решает систему дифференциальных уравнений методом Адамса Башфорта. import...

Комбинаторика - как получить все возможные варианты?
Всем привет! Есть задача. Даны четыре буквы A B C D. Всего можно получить 24 варианта смешения этих...

как так зациклить, чтобы...
как решить задачу???? Пример входных данных 3 1 2 3 4 5 6 7 8 9 Пример выходных данных...


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

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