Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2016, 21:30   #1
KksMM
Новичок
Джуниор
 
Регистрация: 24.05.2015
Сообщений: 1
По умолчанию Шифр Цезаря

Здравствуйте, имеется код Шифра Цезаря с ключом, подскажите,как организовать выдачу полного перебора, т.е. чтобы не было ключа и показывало каждый вариант сдвига.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace cezar
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 1, key = 1;
           
 
            Console.WriteLine("Введите слово,которое нужно зашифровать:");
            string s = Console.ReadLine();
 
            Console.WriteLine("Введите ключ:");
            key = Convert.ToInt32(Console.ReadLine());
 
            string s1 = "";
 
            
            string alfphabet = "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЪЭЮЯ";
 
            int m = alfphabet.Length; 
 
            for (int i = 0; i < s.Length; i++)
            {
                for (int j = 0; j < alfphabet.Length; j++)
                {
                    if (s[i] == alfphabet[j]) 
                    {
                        int temp = j * n + key;
 
                        while (temp >= m)
                            temp -= m;
 
                        s1 = s1 + alfphabet[temp];
                    }
                }
 
            }
 
            Console.WriteLine("Зашифрованное слово:" + s1);
            Console.ReadLine();
        }
    }
}
KksMM вне форума Ответить с цитированием
Старый 10.11.2016, 10:04   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте так:

Код:
        string alfphabet = "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЪЭЮЯ";
 
            int m = alfphabet.Length; 
            for (key = 1; key <= m; key++)
            {
                string s1 = "";
     
                for (int i = 0; i < s.Length; i++)
                {
                    for (int j = 0; j < m; j++)
                    {
                        if (s[i] == alfphabet[j]) 
                        {
                            int temp = j * n + key;
     
                            while (temp >= m)
                                temp -= m;
     
                            s1 = s1 + alfphabet[temp];
                        }
                    }
     
                }
           Console.WriteLine("ключ {0} расшифрованное слово {1}", key, s1);
           }
но вообще код написан не очень эффективно - циклы там, где можно написать код без цикла...

и не понятно, зачем умножать j * n - где n равно 1. Для чего это?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шифр цезаря mnmnm Общие вопросы по Java, Java SE, Kotlin 2 26.04.2016 11:47
Шифр цезаря noutiluss C# (си шарп) 0 17.03.2016 17:35
шифр цезаря Lilen Паскаль, Turbo Pascal, PascalABC.NET 5 24.10.2015 05:07
Шифр Цезаря Maserati Паскаль, Turbo Pascal, PascalABC.NET 16 31.03.2015 16:35
Шифр Цезаря Jasper92 Помощь студентам 3 02.12.2009 18:47