Здравствуйте! Изучаю С++, попалась вот такая задача. Не могу решить уже несколько дней(
Дек содержит последовательность символов для шифровки сообщений. Дан текстовый файл, содержащий зашифрованное сообщение. Пользуясь деком, расшифровать текст. Известно, что при шифровке каждый символ сообщения заменялся следующим за ним в деке по часовой стрелке через один.
Если можно, с комментариями. Спасибо!
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");
}
#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");
}
Дмитрий Азарсков
Благодарю вас.
Каждому символу в файле сопоставить предшествующий ему в деке.
> Если можно, с комментариями. Спасибо!
В смысле? Код за тебя написать? Это сервис ответов а не фриланс-биржа :)
Показывай свой код, который не работает - поможем найти ошибки. За тебя никто решать не станет. Скроешь мой ответ - твоя мамка попадет под машину на следующей неделе.
В смысле? Код за тебя написать? Это сервис ответов а не фриланс-биржа :)
Показывай свой код, который не работает - поможем найти ошибки. За тебя никто решать не станет. Скроешь мой ответ - твоя мамка попадет под машину на следующей неделе.
Дмитрий Азарсков
твоя уже под ней.
Похожие вопросы
- Правильно ли на с++ написал прогу?
- Прошу помочь с двумя задачами по C++. Есть код моей попытки. Буду рад если напишите проги.
- Не открывается прога, подскажите, как решить проблему, см внутри
- Чёт не пойму, как сделать рандомные значения матрицы через массив, прошу доработать, пж прогу!
- Перекодируйте прогу на С++.
- Написать программы на СИ
- Написать программу на языке Си
- Напишите пожалуйста код на 5 вариант очень простой я на 1 курсе вуза и нужен простой код.
- Написать код на языке си
- Задачу написать на с++ , она не сложная но почему то не получается напишите задачу с помощью цикла