Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
3 / 3 / 0
Регистрация: 29.09.2012
Сообщений: 38

Шифрование рюкзаком. Выводит неправильные значения

02.12.2012, 20:29. Показов 3604. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу програмку для шифрования с использованием алгоритма рюкзака. Вроде бы программа правильная, но значения в результате выводит левые значения, даже нашел место, где они вдруг появляются.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace BresCryptLab4
{
    class Program
    {
        static void Main(string[] args)
        {
            Knapsack K = new Knapsack();
            K.Algorithm();
            Console.ReadLine();
        }
    }
    class Knapsack
    {
        public int i, h = 0, sum = 0, c = 11;
        public bool flag = true;
        string buf;
        public void Algorithm()
        {
            string ptext = "whatdoesnotkillmemakesmestronger"; //фраза
            int[] Key = new int[] {1, 3, 5, 8, 9, 11, 14, 16, 19, 24, 27, 30}; //ключ
            Console.WriteLine("Plaintext : " + ptext + "\n");
            ptext.ToArray();
            string[] Bin = new string[ptext.Length];
            int[] Ciphertext = new int[ptext.Length];
            for (i = 0; i < Bin.Length; i++) //перевод в двоичную систему
            {
                Bin[i] = Convert.ToString(Convert.ToChar(ptext[i]) - 97, 2);
                Console.Write(Bin[i] + " ");
            }
            while (h < Bin.Length)//шифрование
            {
                for (int i = Bin[h].ToArray().Length - 1; i > 0; i--)
                {
                    Cipher[h] += Bin[h].ToArray()[i] * Key[c];  //вот здесь происходит что-то мне непонятное
                    if (c > 1) { c--; };                        //если перед этим блоком вывести отдельно например
                                                                //Bin[h].ToArray()[i]  или Key[c], все нормально - значения 0 и 30 соответственно, но если перемножить одно на другое - выходит 1440, и вот такие непонятные числа выходят для каждой буквы.
                }
                h++; 
            }
            Console.WriteLine();
            for (int y = 0; y < Ciphertext.Length; y++)
            {
                Console.Write(Ciphertext[y] + "-");
            }
        }
 
    }
}
Буду благодарен за помощь.

Добавлено через 35 минут
апд понял почему например вместо 0 выводит 1440. Проблема в этой строчке
C#
1
Cipher[h] += Bin[h].ToArray()[i] * Key[c];
Bin[0].ToArray()[4] в кодировке ASCII равен 48, Key[11] равен 30, 48*30 = 1440.
теперь проблема как перейти из кодировки ASCII назад =\
апд может кому-то пригодится, вот так
C#
1
Cipher[h] += Convert.ToInt32(Convert.ToString(Bin[h].ToArray()[i])) * Key[c];
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2012, 20:29
Ответы с готовыми решениями:

Виртуальная функция выводит неправильные значения
Рост и вес выводит 0, как исправить? using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Функция вычисления факториала выводит неправильные значения
Ошибки компилятор не выдает. А вот текст программы: #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; int factorial(int x) { for (int i...

Программа не заполняет первую таблицу. А во второй выводит неправильные значения
Здравствуйте. Программа не заполняет первую таблицу. А во второй выводит неправильные значения. Подскажите, пожалуйста, где и какая ошибка....

1
0 / 0 / 0
Регистрация: 09.12.2018
Сообщений: 45
01.12.2020, 15:39
Чувак, огромное спасибо. Это меня не реально выручило. Даже спустя столько лет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2020, 15:39
Помогаю со студенческими работами здесь

Программа выводит неправильные результаты
program d; uses crt; var a:array of integer; s:real; i,n,k: integer; begin randomize; writeln('Введите размер массива'); ...

Калькулятор выводит неправильные ответы
Здравствуйте! Необходимо создать калькулятор. Он выводит неверные значения, не знаю как исправить, что я не так дела. Надо именно через...

Запрос выводит неправильные данные
Мне нужно из двух таблиц вывести 2 строки. запрос выводит данные но все в кучу . вот так номер 13E2DQ9ijeJwK1oxXCot9HfRw5sZgcnu5 ...

Программа выводит неправильные числа
короче у меня вопрос: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; void main() { int x; scanf(&quot;%d&quot;,x);

memcpy, неправильные значения
Из-под билдера создал структуру: typedef struct { float a; float b; float c; short d; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru