http://zadane.pl/zadanie/4747880
Trzeba zmienić program tak aby przy wykonywaniu polecenia
www
szyfrował na np
qwe
zamiast jak to jest w tym kodzie
qqq
""""""OraZ""""""
Aby algorytm szyfrowania i odszyfrowywania był zawarty w funkcji
""""""OraZ""""""
Aby obsugiwał w obu sprawach(szyfrowania i odszyfrowywania) wszystkie znak ASCII od 32 do 126
------------------Program musi zachować swoją funkcjonalność!------------------
------------------Stosować różnorakie komentarze------------------
500 pkt za odpowiedź + 250 pkt za najlepszą
||||||||||||||||||||||| Wszystkie głupie i niepełne odpowiedzi będą usuwane oraz w szczególnych przypadkach będą użytkownikowi wstawiane ostrzeżenia!!!|||||||||||||||||||||||
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Pisane pod standard C++0x (that is - nie zadziała na GCC poniżej bodajże 4.4.1).
Sformatowany kod źródłowy: http://ideone.com/xMvjEK
Oraz dla czystej formalności, wersja niesformatowana:
#include <iostream>
#include <string>
#include <map>
using namespace std;
map<char, char> char_table;
// init_table
void init_table()
{
const char chars[] = "[email protected]#g$h%j^k&l*;(zxcvbnm,.<>/;:?[]}{|QWERTYUIOPASDFGHJKLZXCVBNM-=_+\\\"'";
for (unsigned int i=32; i<=126; i++)
char_table[i] = chars[i-32];
}
// encode_char
inline char encode_char(const char ch, const unsigned int index)
{
return char_table[ch]+index;
}
// decode_char
inline char decode_char(const char ch, const unsigned int index)
{
for (auto it = char_table.begin(); it != char_table.end(); it++) /* ech... C++ niestety nie posiada wbudowanej obsługi bimap, więc musimy ręcznie przeszukać cały kontener */
if (it->second == (ch - index))
return it->first;
return 0;
}
// encode
string encode(string text)
{
string result = "";
for (unsigned i=0; i<text.length(); i++)
result += encode_char(text[i], i);
return result;
}
// decode
string decode(string text)
{
string result = "";
for (unsigned i=0; i<text.length(); i++)
result += decode_char(text[i], i);
return result;
}
// main
int main()
{
init_table();
int option;
string input;
cout << "1) zakoduj tekst" << endl
<< "2) odkoduj tekst" << endl;
cout << "> ";
cin >> option;
cout << endl
<< "Wprowadz tekst:" << endl;
cout << "> ";
cin >> input;
cout << endl;
switch (option)
{
case 1:
{
cout << "Zakodowany tekst: " << encode(input);
break;
}
case 2:
{
cout << "Odkodowany tekst: " << decode(input);
break;
}
default:
{
cout << "Bledna opcja!";
return 0x0DEFACED;
}
}
return 0;
}