• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

C# Азбука Морзе

CodeDog Оффлайн

CodeDog

Главный модератор
Команда форума
Модератор
Сообщения
157
Симпатии
68
Баллы
100
Азбука Морзе – это один из способов кодирования букв, цифр и других символов. Для кодирования какого-либо символа используется набор знаков, состоящий из “точек” и “тире”. В этой статье мы разберем исходный код программы, которая выполняет шифрование символов в код азбуки Морзе, а также выполняет обратное действие – дешифровку. Программа написана на языке программирования C#. В конце статьи вы можете скачать исходник этой программы, написанной в среде разработки Visual Studio.


В таблице приводятся коды букв азбуки Морзе для русского и английского алфавита, а также для цифр.



Азбука Морзе. Разбор программы

Интерфейс программы представлен четырьмя текстовыми полями и двумя кнопками. В левом столбце (шифрование) расположены элементы управления: textBox1, textBox2 и button1; в правом (дешифровка) – textBox3, textBox4 и button2.



Интерфейс программы

Проводим исходный текст программы для шифрования азбукой Морзе.

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MorseCode
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        char[] characters = new char[] { 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И',
                                                        'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С',
                                                        'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ы', 'Ь',
                                                        'Э', 'Ю', 'Я', '1', '2', '3', '4', '5', '6', '7',
                                                        '8', '9', '0' };

        string[] codeMorse = new string[] { "*–", "–***", "*––", "––*",
                                                        "–**", "*", "***–", "––**",
                                                        "**", "*–––", "–*–", "*–**",
                                                        "––", "–*", "–––", "*––*",
                                                        "*–*", "***", "–", "**–",
                                                        "**–*", "****", "–*–*",
                                                        "–––*", "––––", "−−*−",
                                                        "−*−−", "−**−", "**−**",
                                                        "**−−", "*−*−", "*−−−−",
                                                        "**−−−", "***−−", "****−",
                                                        "*****", "−****", "−−***",
                                                        "−−−**", "−−−−*", "−−−−−" };

        private void button1_Click(object sender, EventArgs e)
        {
            string input = textBox1.Text;
            input = input.ToUpper();
            string output = "";
            int index;
            foreach(char c in input)
            {
                if (c != ' ')
                {
                    index = Array.IndexOf(characters, c);
                    output += codeMorse[index] + " ";
                }
            }
            output = output.Remove(output.Length - 1);
            textBox2.Text = output;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string input = textBox3.Text;
            string[] split = input.Split(' ');
            string output = "";
            int index;
            foreach (string s in split)
            {
                index = Array.IndexOf(codeMorse, s);
                output += characters[index] + " ";
            }
            output = output.Remove(output.Length - 1);
            textBox4.Text = output;
        }

    }
}
В массиве символов characters содержатся все символы (русские буквы и цифры), которые программа может шифровать и дешифровать. В массиве строк codeMorse хранятся последовательности кода азбуки Морзе для символов в том же порядке, что и символы в characters.

При нажатии кнопки “Зашифровать” происходит следующее (строки 39-55): в переменную input заносится текст из textBox1, затем этот текст переводится в верхний регистр с помощью метода ToUpper(). Далее в цикле foreach перебираем посимвольно строку input. Для каждого символа выполняем поиск такого же символа в массиве characters (пробелы игнорируются) с помощью метода IndexOf() и сохраняем его номер в переменную index. “Добавляем” к строке вывода (output) код Морзе из массива codeMorse, в качестве номера элемента указываем index. Разделяем коды Морзе пробелами. С помощью метода Remove() удаляем последний символ в строке output – он является пробельным символом. И, наконец, выводим результат шифрования на экран в textBox2.

Процесс дешифровки по азбуке Морзе реализован по аналогии с шифрованием, поэтому говорить о нем подробно нет смысла. Отметим лишь, что к входной строке применяется метод Split(), который разбивает строку input на массив строк, разделенных пробелом. Каждый элемент этого массива будет являться одним закодированным символом.

Демонстрация работы программы “Азбука Морзе”:




Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Для просмотра содержимого вам необходимо авторизоваться.



Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


 
Вверх Снизу