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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
neo7777777
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 16
#1

Шифрование «методом бутерброда» - C++

13.11.2011, 12:10. Просмотров 1325. Ответов 2
Метки нет (Все метки)

Секретное агентство «Super-Secret-no» решило для шифрования переписки своих сотрудников использовать «метод бутерброда». Сначала буквы слова нумеруются в таком порядке: первая буква получает номер 1, последняя буква - номер 2, вторая – номер 3, предпоследняя – номер 4, потом третья … и так для всех букв. Затем все буквы записываются в шифр в порядке своих номеров. В конец зашифрованного слова добавляется знак «диез» (#), который нельзя использовать в сообщениях.
Например, слово «sandwich» зашифруется в «shacnidw#».

К сожалению, программист «Super-Secret-no», написал только программу шифрования и уволился. И теперь агенты не могут понять, что же они написали друг другу. Помогите им.

Формат входных данных (input.txt)
Вводится слово, зашифрованное методом бутерброда. Длина слова не превышает 100 букв.
Формат результата (output.txt)
Выведите расшифрованное слово.

Помогите пожалуйста решить программу. Буду благодарна всем кто откликнется. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2011, 12:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шифрование «методом бутерброда» (C++):

Шифрование методом Цезаря - C++
Здравствуйте. Неправильно работает шифр и неправильно работает с последней буквой "я", не сдвигается. "Я" сдвигается, строчная нет. Как...

Шифрование Методом Виженера На C++ - C++
Здравствуйте. Мне нужна программа на тему Шифрование методом виженера. Я пытался найти в интернете варианты шифрования нашел только вот...

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

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

Шифрование методом перестановки - C++
люди помогите пожалуйста я сделал программу на Си "шифт перестановки" а препад говорит что ему только на С++ сдавать а я С++ вообще не знаю...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
13.11.2011, 16:06 #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
#include <stdio.h>
#include <string.h>
 
#define BUF_SIZE  100
 
char *encode(char *dst, char *src);
char *decode(char *dst, char *src);
char *rmnl(char *s); 
 
int main()
{
    char in[BUF_SIZE], out[BUF_SIZE + 1];
    int c;
    
    while (printf("\nenter a line:\n") > 0
        && fgets(in, BUF_SIZE, stdin) && *in != '\n') {
        rmnl(in);
        printf("e - encode\n" "d - decode\n" "action: ");
        if ((c = getchar()) == 'e')
            encode(out, in);
        else if (c == 'd')
            decode(out, in);
        else
            break;
        printf("\n%s\n", out);
        getchar();
    }
    return 0;
}
 
char *encode(char *dst, char *src)
{
    char *beg = dst;
    char *p = src;
    char *t = src + strlen(src) - 1;
 
    for ( ; p <= t; p++, t--) {
        *dst++ = *p;
        if (p < t)
            *dst++ = *t;
    }
    *dst++ = '#';
    *dst   = '\0';
    return beg;
}
 
char *decode(char *dst, char *src)
{
    char *p = dst;
    char *t = dst + strlen(src) - 1;
 
    *t-- = '\0';  /* skip a '#' */
    while (*src && *src != '#') {
        *p++ = *src++;
        if (*src && *src != '#')
            *t-- = *src++;
    }
    return dst;
}
 
/* rmnl: remove a newline */
char *rmnl(char *s)
{
    char *p = s + strlen(s) - 1;
 
    if (*p == '\n')
        *p = '\0';
    return s;
}
asem95
0 / 0 / 0
Регистрация: 15.04.2013
Сообщений: 11
15.04.2013, 13:21 #3
Net_Wanderer, а как поменять в коде то,чтобы зашифрованное слово выходило без решетки в конце??
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 13:21
Привет! Вот еще темы с ответами:

Шифрование методом решёток - C++
Выдаёт ошибку идентификатор &quot;gets&quot; не определён, как сделать, чтобы избавиться от этой ошибки? void main() { char *s; // строка для...

Шифрование методом Цезаря - C++
Шифрование методом Цезаря со сдвигом на 6 нужна блок–схема

Шифрование методом цезаря - C++
Здравствуйте, прошу вас о помощи. Это может показаться наглым, но, мне срочно нужна помощь с курсовым проектом, дело в том что с...

Шифрование методом перестановки на C++ - C++
Дана строка. Зашифровать ее следующим методом: строка вписывается в таблицу размера NхM по строкам, а результат считывается по столбцам ...


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

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

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