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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2016, 20:58   #1
Jar
 
Регистрация: 03.05.2014
Сообщений: 7
По умолчанию Переставить буквы

Есть программа, которая заменяет буквы в строке по индексу из ключа.
Проблема в том, что строка имеет длину в 6 символов. Необходима помощь в реализации этого алгоритма на строку произвольной длины

Код:
       public static string Encryption(string text, int[] key)
        {
            string new_text = "";    
            for (int i = 0; i < 6; i++) {
 
                new_text += text[key[i] - 1];
            }
            return new_text;
        }
 
        private static void Main()
        {
    
            var s =Console.ReadLine();  
            int[] key = {6,3,2,5,1,4};
            var s2=Encryption(s,key);
            Console.WriteLine(s2);
            Console.ReadKey();          
        }
Jar вне форума Ответить с цитированием
Старый 06.11.2016, 21:56   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

А что сложного?

Код:
public static string Encryption(string text, int[] key)
        {
            if(key.Length!=text.Length)
               throw new ArgumentException("Incorrect length");
            StringBuilder new_text = new StringBuilder(key.Length);// Алгоритмически лучше
            for (int i = 0; i < key.Length; i++) {
 
                new_text.Append( text[key[i] - 1]);
            }
            return new_text.ToString();
        }
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 06.11.2016, 22:18   #3
Jar
 
Регистрация: 03.05.2014
Сообщений: 7
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
А что сложного?
Нужно учесть пробелы между словами к примеру и не выкидывать Exception, а также считать его за символ и заменять его согласно индексу ключа
Jar вне форума Ответить с цитированием
Старый 06.11.2016, 23:22   #4
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Exception нужен, так как твой алгоритм не работает с ключом и строкой разной длины.

А про пробелы что-то не понял. Пробелы нормально обрабатываются.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 06.11.2016, 23:46   #5
Jar
 
Регистрация: 03.05.2014
Сообщений: 7
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
Exception нужен, так как твой алгоритм не работает с ключом и строкой разной длины.

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить в файле все первые буквы в словах на заглавные буквы Luchfan12 Помощь студентам 6 15.10.2014 13:10
Дана строка символов. Заменить все буквы d, после которых следует запятая, на буквы x (Си) XedCrab Помощь студентам 3 29.01.2014 10:49
Переставить буквы в обратном порядке Julia2707 Помощь студентам 6 10.03.2013 22:07
Переставить буквы в слове слева направо вася радугов Помощь студентам 2 03.10.2012 18:52
Переставить все буквы латинского алфавита в начало строки в порядке следования. zaq2000 Паскаль, Turbo Pascal, PascalABC.NET 17 18.12.2008 23:42