C/C++

Как написать такую прогу?

Здравствуйте! Изучаю С++, попалась вот такая задача. Не могу решить уже несколько дней(


Дек содержит последовательность символов для шифровки сообщений. Дан текстовый файл, содержащий зашифрованное сообщение. Пользуясь деком, расшифровать текст. Известно, что при шифровке каждый символ сообщения заменялся следующим за ним в деке по часовой стрелке через один.

Если можно, с комментариями. Спасибо!
#include <iostream>
#include <deque>
#include <string>
#include <fstream>
using namespace std;
void encode(deque<char>& box, int n) {
while (--n >= 0) {
box.push_back(box.front());
box.pop_front();
}
}
void decode(deque<char>& box, int n) {
while (--n >= 0) {
box.push_front(box.back());
box.pop_back();
}
}
void show(const deque<char>& box) {
for (auto& ch : box) cout.put(ch);
puts("");
}
bool save(const string& path, const deque<char>& box) {
ofstream out(path);
if (out.is_open()) {
for (auto& ch : box) out.put(ch);
out.close();
return true;
}
return false;
}
deque<char> load(const string& path) {
ifstream inp(path);
if (inp.is_open()) {
string line;
getline(inp, line);
deque<char> box{ line.begin(), line.end() };
inp.close();
return box;
}
return deque<char>{};
}
int main() {
system("chcp 1251 > nul");
string line{ "Это было прошлым летом, в середине января." };
deque<char> box{ line.begin(), line.end() };
show(box);
encode(box, 2);
const string path{ "code.txt" };
if (save(path, box)) {
auto fox = load(path);
if (!fox.empty()) {
show(fox);
decode(fox, 2);
show(fox);
} else {
puts("Файл не содержит данных!");
}
} else {
puts("Не удалось сохранить данные в файл!");
}
system("pause > nul");
}
Кирилл Кризский
Кирилл Кризский
81 572
Лучший ответ
Дмитрий Азарсков Благодарю вас.
Каждому символу в файле сопоставить предшествующий ему в деке.
> Если можно, с комментариями. Спасибо!
В смысле? Код за тебя написать? Это сервис ответов а не фриланс-биржа :)
Показывай свой код, который не работает - поможем найти ошибки. За тебя никто решать не станет. Скроешь мой ответ - твоя мамка попадет под машину на следующей неделе.
Дмитрий Азарсков твоя уже под ней.