Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
LittleFox
1

Код Цезаря

14.04.2011, 16:23. Показов 2102. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Объясните пожалуйста выделенные строчки (35-57) кода цезаря.


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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace Ceaser
{
    public class Program
    {
        [STAThread]
        public static void Main(string[] args)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog() != DialogResult.OK)
                return;
            FileStream fsInput = new FileStream(ofd.FileName, FileMode.Open);
 
            int offset;
 
 
            Console.WriteLine("Ключ?");
            offset = int.Parse(Console.ReadLine());
 
 
            Console.WriteLine("Шифровать - 1 Расшифровать - 2");
            offset = Console.ReadLine() == "2" ? offset = 256 - offset : offset;
 
            FileStream fsOutput = new FileStream(Path.GetRandomFileName() + Path.GetExtension(ofd.FileName), FileMode.CreateNew);
 
            while (fsInput.Position != fsInput.Length)
            {
                byte b = (byte)fsInput.ReadByte();
                byte o = GetWithOffset(b, offset);
                fsOutput.WriteByte(o);
            }
 
            fsOutput.Close();
            fsInput.Close();
 
            Console.ReadKey();
        }
 
        public static byte GetWithOffset(byte src, int offset)
        {
            int res = (int)src + offset;
            if (res >= 255)
                return (byte)((src + offset) % 256);
            else if (res < 255)
                return (byte)(src + offset);
            else
                throw new Exception("Ошибка!!!");
        }
    }
}

Заранее спасибо всем откликнувшимся!=)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2011, 16:23
Ответы с готовыми решениями:

Код Цезаря
У меня большая просьба! Пожалуйста кто сможет прокомментируйте выделенную часть программы. Тут...

Шифр Цезаря
Ребята,помогите пожалуйста. Нужно написать шифр Цезаря в си шарпе ,использую вот такой алгоритм...

Шифр Цезаря
Ребята помогите пожалуйста сдать эту задачу!!!! Надо первые 3 буквы алфавита переставить назад и...

Шифр Цезаря
Здравствуйте, понимаю что тема достаточно распространенная, но пишу программу для шифрования...

2
1 / 1 / 1
Регистрация: 16.04.2011
Сообщений: 7
17.04.2011, 13:35 2
вот на тебе, моя лаба) не поймешь спрашивай(работает с украинскими большими буквами)
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
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace lab1_Ceaser
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static string alphavit = "АБВГДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ ";
 
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                int key = Convert.ToInt32(textBox3.Text);
                string Data = textBox1.Text;
                string Data2 = null;
 
                for (int i = 0; i < Data.Length; i++)
                {
                    try
                    {
 
                        Data2 += alphavit[alphavit.IndexOf(Data[i]) + key];
                    }
                    catch (IndexOutOfRangeException)
                    {
 
                        Data2 += alphavit[((alphavit.IndexOf(Data[i]) + key) % alphavit.Length)];
                    }
                }
                textBox2.Text = Data2;
                MessageBox.Show("Текст закодовано !!!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            int key = Convert.ToInt32(textBox3.Text);
            string Data = textBox2.Text;
            string Data2 = null;
 
            for (int i = 0; i < Data.Length; i++)
            {
                try
                {
                    Data2 += alphavit[alphavit.IndexOf(Data[i]) - key];
                }
                catch (IndexOutOfRangeException)
                {
                    Data2 += alphavit[(alphavit.IndexOf(Data[i]) + alphavit.Length - key)];
                }
            }
            textBox4.Text = Data2;
            MessageBox.Show("Текст декодовано !!!");
        }
 
 
 
 
    }
 
    }
Сам проект
http://webfile.ru/5266263
1
LittleFox
17.04.2011, 17:31 3
Спасибочки
17.04.2011, 17:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2011, 17:31
Помогаю со студенческими работами здесь

Дешифратор Цезаря
Подскажите с дешифратором для Цезаря....заранее спасибо... char alphavit = { ...

Шифр Цезаря
Алфавит представляет из себя массив символов и задается методом setAlphabet; Значение сдвига...

алгоритм цезаря
здраствуйте!!! помогите пожалуйста решить задачу нужно написать программу для алгоритма цезаря

Шифр Цезаря
Хочу поделиться шифром Цезаря. Я взял код из интернета, точнее отсюда...


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

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