Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2021, 14:24   #1
donatalius
 
Регистрация: 19.10.2021
Сообщений: 5
По умолчанию Помогите исправить код пограммы шифрования и дешифрования сообщений

Задание заключается в том что нужно:
Написать программу шифрования и дешифрования сообщений. Шифрование выполнить следующим образом: расположить сначала все символы, расположенные на нечетных позициях, а затем в обратном порядке все символы, расположенные на четных позициях.
Реализовать меню для выбора режима работы программы: шифрование, дешифрование и выход. Предусмотреть возможность шифрования и дешифрования программно заданной строки, если пользователем задано пустая строка.
Помогите довести код до ума, на скриншоте видно что происходит
И как сделать возможность шифрования и дешифрования программно заданной строки, если пользователем задано пустая строка

Код:
#include <iostream>
#include <math.h>
#include <iomanip>
#include <string.h>
#include <stdio.h>
#include <cstdlib>

using std::cout;
using std::cin;
using std::endl;
const int string_size = 80;

int main() {
    int i = 0;
    char string[string_size];
    char newstring[string_size];
    cout << "1 - encrypt" << endl;
    cout << "2 - decrypt" << endl;
    cout << "3 - exit" << endl;
    cin >> i;
    std::cout << "Enter string: ";
    std::cin.getline(string, string_size - 1);
    while (i > 0 && i < 4) {
        switch (i) {
        case 1: {
            char* ptr = string + 1, * newptr = newstring;
            while (*newptr++ = *ptr, ptr += 2, ptr < string + strlen(string));
            ptr = ptr == string + strlen(string) ? ptr - 1 : ptr - 3;
            while (*newptr++ = *ptr, ptr -= 2, ptr >= string);
            *newptr = '\0';
            std::cout << "New string: " << newstring << std::endl;
        }
            break;
        case 2: {
            std::cout << "Enter string: ";
            std::cin.getline(string, string_size - 1);
            char* ptr = string + 1, * newptr = newstring;
            while (*newptr++ = *ptr, ptr += 2, ptr < string + strlen(string));
            ptr = ptr == string + strlen(string) ? ptr - 1 : ptr - 3;
            while (*newptr++ = *ptr, ptr -= 2, ptr >= string);
            *newptr = '\0';
            std::cout << "New string: " << newstring << std::endl;
        }
            break;
        case 3:
            cout << "exit" << endl;
            break;
        }
        cout << "1 - encrypt" << endl;
        cout << "2 - decrypt" << endl;
        cout << "3 - exit" << endl;
        cin >> i;
    }

    return 0;
}
Изображения
Тип файла: png Screenshot_11.png (3.2 Кб, 11 просмотров)
donatalius вне форума Ответить с цитированием
Старый 19.10.2021, 14:39   #2
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Открываете доку на функцию https://en.cppreference.com/w/cpp/st...string/getline и читаете
Цитата:
Notes
When consuming whitespace-delimited input (e.g. int n; std::cin >> n; ) any whitespace that follows, including a newline character, will be left on the input stream. Then when switching to line-oriented input, the first line retrieved with getline will be just that whitespace. In the likely case that this is unwanted behaviour, possible solutions include:

An explicit extraneous initial call to getline
Removing consecutive whitespace with std::cin >> std::ws
Ignoring all leftover characters on the line of input with cin.ignore(std::numeric_limits<std: :streamsize>::max(), '\n');
ForenLi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Криптографические системы шифрования/дешифрования incor Фриланс 3 29.04.2021 05:33
Программа шифрования/дешифрования. mishanqa Фриланс 0 23.05.2011 17:12
Программа шифрования/дешифрования.С++ mishanqa Помощь студентам 2 06.05.2011 19:58
Алгоритм шифрования/дешифрования Horus92 Помощь студентам 2 05.12.2009 21:40
Помогите написать прогу шифрования/дешифрования DiSpalL Помощь студентам 8 31.05.2009 09:25