Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
 Аватар для KotovichMX
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627

Как проделать замену символов алфавита более оптимально, используя один массив?

30.01.2017, 06:15. Показов 3984. Ответов 76
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите пожалуйста как проделать замену символов алфавита более оптимально переводя в один массив. у меня что-то не получается. вот код :


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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication177
{
    internal sealed class Program
    {
        static void Main()
        {
 
 
            string s = "а";
            string s1 = "б";
            string s2 = "в";
            string s3 = "г";
            string s4 = "д";
            string s5 = "э";
            string s6 = "е";
            string s7 = "ж";
 
            Console.WriteLine(s.Replace("а", "1"));
            Console.WriteLine(s1.Replace("б", "2"));
            Console.WriteLine(s2.Replace("в", "3"));
            Console.WriteLine(s3.Replace("г", "4"));
            Console.WriteLine(s4.Replace("д", "5"));
            Console.WriteLine(s5.Replace("э", "6"));
            Console.WriteLine(s6.Replace("е", "7"));
            Console.WriteLine(s7.Replace("ж", "8"));
            Console.ReadLine();
            Console.ReadKey();
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2017, 06:15
Ответы с готовыми решениями:

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

Как написать более оптимально программу
Здравствуйте. Программа заполняет ячейку на основании введенных данных в TextBox`ы, расположенных в в MultiPage. Код рабочий, но невероятно...

Как разбить строку символов используя один разделитель.
Как разбить строку символов используя один разделитель. Например: Dim strTest As string Dim strTest_1 As string Dim strTest_2 As...

76
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
30.01.2017, 11:29
Студворк — интернет-сервис помощи студентам
KotovichMX, окей. Запишусь на курсы телепатов, раз с тобой по другому никак
0
 Аватар для KotovichMX
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
30.01.2017, 11:35  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
Ну а для обратного преобразования нужно читать по 2 символа, соединять их в строку, превращать строку в int, а затем по индексу элемента в массиве вытягивать буквы.
сложновато... вы уверены что удастся собрать рабочее решение?
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
30.01.2017, 11:37
Цитата Сообщение от KotovichMX Посмотреть сообщение
сложновато... вы уверены что удастся собрать рабочее решение?
Нет, не удастся. Ибо в оригинальной строке вполне могут быть числа, которые данные алгоритм попытается "декодировать" в букву. Соответственного результат будет отличаться от оригинала.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.01.2017, 11:53
KotovichMX,
Вот:
C#
1
2
3
4
5
6
7
8
9
10
static string ReturnString(string encryptedString) 
{
    string keyString = "абвгдеёжзийклмнопрстуфхцчшщьыъэюя";
    StringBuilder sb = new StringBuilder();
    for (int i=0; i<encryptedString.Length; i+=2)
    {
        sb.Append(keyString[int.Parse(string.Format("{0}{1}", encryptedString[i], encryptedString[i + 1])) - 1]);
    }
    return sb.ToString();
}
Но, есть ряд условий:
1) алфавит (строка keyString) должен быть расширен всеми символами, которые даже теоретически могут встретиться в строке
2) даже цифры нужно менять на двузначные коды
3) если символов в алфавите больше 99, то код должен быть трехзначным
Для решения подобных задач (закодировать - раскодировать) в .NET есть стандартные классы, определенные в пространстве имен System.Security.Cryptography
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
30.01.2017, 11:55
Даценд, а тут случайно нет выхода за пределы массива:

C#
1
encryptedString[i + 1]
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.01.2017, 12:06
Цитата Сообщение от Usaga Посмотреть сообщение
Даценд, а тут случайно нет выхода за пределы массива
Нет. Эта сложная технология криптования успешно протестирована. Пройдено 3 теста со словами "баба", "уу" и "БКА".
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
30.01.2017, 12:09
Даценд, ну, ТС говорил (точнее я думаю, ибо он ничего вразумительного не сказал), что нужно только буквы алфавита (русского) кодировать. А если в строке иные символы? Понятно, что Вы подразумеваете кодирование всех символов, но ТС-а же фиг поймёшь...
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.01.2017, 12:19
Usaga,
Да я и не рассматривал вариант, когда только русские буквы нужно кодировать, а остальные символы оставлять как есть.
Я даже смысла в таком избирательном кодировании увидеть не могу.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
30.01.2017, 12:29
KotovichMX, мне вот стало интересно.

А для чего это всё? Для чего понадобилось вот так заменять буквы? Или это просто для развития?
0
 Аватар для KotovichMX
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
30.01.2017, 12:33  [ТС]
что то у меня не получается. какой параметр вводить в Console.WriteLine();? вот что я собирал:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication180
{
    class Program
    {
        static void Main(string[] args)
        {
            string keyString = "абвгдеёжзийклмнопрстуфхцчшщьыъэюя";
            string str = "А где логика? А нет логики!";
            StringBuilder sb = new StringBuilder();
            int index;
            foreach (char ch in str)
            {
                index = keyString.IndexOf(Char.ToLower(ch));
                sb.Append(index > -1 ? (index + 1).ToString() : ch.ToString());
            }
            str = sb.ToString();
            Console.WriteLine(str);
            Console.ReadKey();
 
        }
        static string ReturnString(string encryptedString)
        {
            string keyString = "абвгдеёжзийклмнопрстуфхцчшщьыъэюя";
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < encryptedString.Length; i += 2)
            {
                sb.Append(keyString[int.Parse(string.Format("{0}{1}", encryptedString[i], encryptedString[i + 1])) - 1]);
            }
            return sb.ToString();
            Console.WriteLine();
            Console.ReadKey();
 
        }
    }
}
Миниатюры
Как проделать замену символов алфавита более оптимально, используя один массив?  
0
 Аватар для KotovichMX
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
30.01.2017, 12:34  [ТС]
Цитата Сообщение от LeniumSoft Посмотреть сообщение
А для чего это всё?
ну ради лося. и знаний.
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
30.01.2017, 12:41
KotovichMX, тебе уже сказали, что алфавит нужно расширить всеми символами, которые могут быть в шифруемой строке. Текущий не включает знаки пунктуации и пробел.

Добавлено через 29 секунд
Ну и регистр там не учитывается.
0
 Аватар для KotovichMX
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
31.01.2017, 12:23  [ТС]
убрал все знаки припинания заклинания и пр.. и всё равно в консольке тока первая часть кода. где я ошибся?
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication180
{
    class Program
    {
        static void Main(string[] args)
        {
            string keyString = "абвгдеёжзийклмнопрстуфхцчшщьыъэюя";
            string str = "абвгдейка";
            StringBuilder sb = new StringBuilder();
            int index;
            foreach (char ch in str)
            {
                index = keyString.IndexOf(Char.ToLower(ch));
                sb.Append(index > -1 ? (index + 1).ToString() : ch.ToString());
            }
            str = sb.ToString();
            Console.WriteLine(str);
            Console.ReadKey();
 
        }
        static string ReturnString(string encryptedString)
        {
            string keyString = "абвгдеёжзийклмнопрстуфхцчшщьыъэюя";
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < encryptedString.Length; i += 2)
            {
                sb.Append(keyString[int.Parse(string.Format("{0}{1}", encryptedString[i], encryptedString[i + 1])) - 1]);
            }
            return sb.ToString();
            Console.WriteLine();
            Console.ReadKey();
 
        }
    }
}
Миниатюры
Как проделать замену символов алфавита более оптимально, используя один массив?  
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
31.01.2017, 12:28
KotovichMX, никакая там не "первая часть". Вывод в консоли верный: все буквы были зашифрованы.
0
 Аватар для KotovichMX
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
31.01.2017, 12:30  [ТС]
я ожидал в первой строке увидеть шифр а во второй текст.
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
31.01.2017, 12:31
KotovichMX, а ты метод дешифровки вызвал, чтобы это ожидать? Или раз ты его описал, то он сам вызваться должен?
0
 Аватар для KotovichMX
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
31.01.2017, 12:33  [ТС]
Цитата Сообщение от KotovichMX Посмотреть сообщение
static string ReturnString(string encryptedString)
это что? вроде как метод.
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
31.01.2017, 12:35
Цитата Сообщение от KotovichMX Посмотреть сообщение
это что? вроде как метод.
Да, метод. А что с ним в данной строке происходит? Ничего! Он у тебя просто определён. Как машина на парковке. Просто есть и всё.
0
 Аватар для KotovichMX
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
31.01.2017, 12:37  [ТС]
неясно. у Даценд это же работало.
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,734
31.01.2017, 12:39
KotovichMX, чтобы стало ясно, нужно какой-нибудь учебничек полистать. Хотя бы по диагонали.

Мало метод определить. Его ещё нужно вызвать в нужный момент, передав аргументы (если таковые имеются).

Добавлено через 29 секунд
Цитата Сообщение от KotovichMX Посмотреть сообщение
неясно. у Даценд это же работало
Сравни свой код и его.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.01.2017, 12:39

Как разбить строку символов используя один разделитель
Как разбить строку символов используя один разделитель. Например: Dim strTest As string Dim strTest_1 As string Dim strTest_2 As...

Как перевести массив байт в массив символов, используя определённую кодировку?
Всем доброго времени суток, ув. форумчане! Делаю алгоритм LFSR, почти закончил. Но застопорился на вот таком этапе. У меня имеется...

Запись алфавита в массив символов
Народ как можно записать алфавит в массив символов? Я пробовал сделать как с 1 символом но на экран выводятся хрень. for(mas1 ...

Конвертация файла в массив аски символов, как сделать более читаемый код?
Задача следующая, есть обычный файл index.html каждый символ внутри него надо перегнать через аски преобразование и занести его в...

Как соединить массив символов и один символ
void Match(char x) { if (Look == x) GetChar(); else { char s=&quot;\'&quot;; strcat(s, x); ...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru