Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

12.07.2011, 15:23. Просмотров 2037. Ответов 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. Знаю что ошибка скорее всего элементарная, но не могу понять в чем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2011, 15:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простой шифратор (C++):

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

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

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

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

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

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

2
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;
        
}
1
Vultaron
1 / 1 / 0
Регистрация: 27.03.2011
Сообщений: 31
12.07.2011, 17:08  [ТС] #3
Да, все правильно, благодарю
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2011, 17:08
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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