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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Vultaron
 Аватар для Vultaron
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 31
12.07.2011, 15:23     Простой шифратор #1
Задача такая: пользователь вводит четырехзначное число, после этого программа отображает это число в шифрованном виде. Шифрование заключается в том, что к каждой цифре числа прибавляется число 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     Простой шифратор
Посмотрите здесь:

C++ Шифратор текста, работа с файлами.
Шифратор пароля. Покритикуйте пожалуйста. C++
Простой вопрос C++
C++ Шифратор и дешифратор
Простой Makefile C++
Поправьте мой код (шифратор файлов) C++
Нужен шифратор или расшифровщик 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
 Аватар для Vultaron
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 31
12.07.2011, 17:08  [ТС]     Простой шифратор #3
Да, все правильно, благодарю
Yandex
Объявления
12.07.2011, 17:08     Простой шифратор
Ответ Создать тему
Опции темы

Текущее время: 09:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru