Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Vultaron
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 31
#1

Простой шифратор - C++

12.07.2011, 15:23. Просмотров 1890. Ответов 2
Метки нет (Все метки)

Задача такая: пользователь вводит четырехзначное число, после этого программа отображает это число в шифрованном виде. Шифрование заключается в том, что к каждой цифре числа прибавляется число 7, после этого от каждой из четырех новых цифр берется операция взятия остатка от деления на 10 (mod 10). Например, есть число 1234.
Согласно шифрования программа должна выдать: (1 + 7) mod 10 (2 + 7) mod 10 (3 + 7) mod 10 (4 + 7) mod 10
т.е. число 8901.
Код программы такой:
C++
1
2
3
4
5
6
7
8
//Enigma.h
class Number
{
    public:
    void greeting ();
    void enigmaWork ();
    void notencryptedToEncrypted (int);
};
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
//Enigma.cpp
#include <iostream>
#include <math.h>
#include "Enigma.h"
using std::cin;
using std::cout;
using std::endl;
 
void Number::greeting ()
{
    std::cout<<"Вас приветствует шифровальная утилита";
}
 
void Number::enigmaWork ()
{
    int mode;
    int number;
    greeting();
    std::cout<<"Выберите режим работы\n(1 - из обычного числа перевести в шифрованное)"<<endl;
    std::cin>>mode;
    std::cout<<"Введите число"<<endl;
    std::cin>>number;
    
    if (mode == 1)
    {
        Number::notencryptedToEncrypted (number);
    }
}
 
//Ошибка скорее всего в реализации этой функции
void Number::notencryptedToEncrypted (int number)
{
       
    int changedNumber = 0;
    int passwordIndex = 1000;
    while (passwordIndex >= 1)
    {
        if ((number % passwordIndex) >= 0)
        {
            int a;
            a = static_cast<int>(number/passwordIndex + 7);
            if (a % 10 > 0)
            {
                changedNumber += (a % 10) * passwordIndex; 
                passwordIndex = passwordIndex / 10;
            }
            else
            {
                changedNumber += a * passwordIndex;
                passwordIndex = passwordIndex / 10;
            }           
        }
        else
        {
            passwordIndex = passwordIndex / 10;
        }
    }
    
    std::cout<<"Исходное число: "<<number<<"\nЗашифрованное число: "<<changedNumber<<endl;
    
}
C++
1
2
3
4
5
6
7
8
9
/Main.cpp
#include "Enigma.h"
 
int main ()
{
    Number number;
    number.enigmaWork ();
    return 0;
}
P.S. Знаю что ошибка скорее всего элементарная, но не могу понять в чем
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2011, 15:23     Простой шифратор
Посмотрите здесь:

XOR Шифратор - C++
Сделал шифратор на основе XOR’а, но если ввести пробел в сообщении которое надо зашифровать, програма во всю отказывается шифровать, то...

Шифратор и дешифратор - C++
Помогите пожалуйста написать программу, которая зашифровывает файл и расшифровывает, заранее благодарю!

Как написать шифратор? - C++
Нужна программа, которая в РУССКОМ тексте заменяет буквы на другие символы. Например: буква &quot;Н&quot; - это символ &quot;=&quot;. Визуально, программа...

Шифратор методом виженера - C++
Помогите пожалуйста срочно написать программу, на тему шифратор и дешифратор методом виженера на с++.

Написать шифратор\дешифратор на С++ - C++
Напишите программу, выполняющую следующие действия (в начале программы выводится запрос о том, какое из действий необходимо выполнить): ...

Шифратор/Дешифратор шифра цезаря - C++
Не так уж и давно мне было необходимо создать шифратор в шифр цезаря(сори за тавтологию). Однако мне не удалось найти НИ ОДИН рабочий...

Шифратор и дешифратор текста не работает - C++
Здравствуйте уважаемые форумчане, подскажите мне, не изучал С++ совсем, однако попросили написать программу. На этом форуме вроде нашёл...

Шифратор пароля. Покритикуйте пожалуйста. - C++
Это моя первая программка на С++, если кому не лень, натычте меня носом в ляпы. Чтобы не топтаться по граблям. :) #include...

Нужен шифратор или расшифровщик - C++
у кого-нибудь есть шифратор рабочий?или расшифровщик к нему.

Шифратор текста, работа с файлами. - C++
Шифратор Цезаря. Разработать программу, которая кодирует вводимый с клавиатуры или из файла исходный текст f1 и сохраняет его в выходном...

Поправьте мой код (шифратор файлов) - C++
Задача: сделать шифратор файлов на основе побайтового копирования с паролем вот, что у меня получилось: все работает, но только с...

Шифратор/дешифратор, методом квадрата Виженера - C++
Необходимо написать программу шифратора и дешифратора с ключом, метод квадрат Виженера. Помогите, пожалуйста.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
12.07.2011, 16:18     Простой шифратор #2
в твой код не всматривался - может я упустил что-то, что предусмотрел ты.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Number::notencryptedToEncrypted (int number)
{
       
        int changedNumber = 0;
        int temp = number;
        int num_of_digits = 4;
        
        while (temp)
        {
            changedNumber/=10;
            changedNumber+=(((temp%10)+7)%10)*pow(10,(num_of_digits-1));
            temp/=10;
        }
        
        std::cout<<"num: "<<number<<"\ncryp_num: "<<changedNumber<<endl;
        
}
Vultaron
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 31
12.07.2011, 17:08  [ТС]     Простой шифратор #3
Да, все правильно, благодарю
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru