Witam,
myślałem że minie sporo czasu do kolejnego pytania na jakimkolwiek forum związanego z programowaniem, a tu kolejny problem.
Napisałem sobie chyba najtrywialniejszy program do szyfrowania stringów. Nie testowałem go jeszcze, bo problem z pewną rzeczą.
Tutaj kod:
#include <iostream>
#include <string>
#include <windows.h>
#define PVERSION "1.0"
#define PNAME "Simple Crypter"
std::string crypt(const std::string &StringToCrypt);
std::string encrypt(const std::string &StringToEncrypt);
void color(int col){
static HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(h, col);
}
void DisplayPrompt(){
color(12);
std::cout<<"@";
color(13);
std::cout<<"~~";
color(9);
std::cout<<">";
color(7);
}
int main(){
std::string StringFromUser;
color(11);
std::cout<<PNAME<<" "<<PVERSION<<" loaded.\n\n";
DisplayPrompt();
do{
std::getline(std::cin, StringFromUser, '\n');
}while(StringFromUser.empty());
if(StringFromUser=="exit") return 0;
color(12);
std::cout<<"\n1.";
color(9);
std::cout<<"crypt";
color(12);
std::cout<<"\n2.";
color(9);
std::cout<<"encrypt\n";
std::string CharFromUser;
do{
DisplayPrompt();
std::getline(std::cin, CharFromUser, '\n');
std::cout<<CharFromUser<<"\n";
}while((CharFromUser!="1")||(CharFromUser!="2")||(CharFromUser!="exit"));
if(CharFromUser=="exit") return 0;
else if(CharFromUser=="1") crypt(StringFromUser);
else encrypt(StringFromUser);
}
std::string crypt(const std::string &StringToCrypt){
std::string temp = StringToCrypt;
for(int i=0;i<temp.length();++i){
temp[i]=static_cast<int>(temp[i])+(i+i);
}
std::cout<<temp<<'\n';
}
std::string encrypt(const std::string &StringToEncrypt){
std::string temp = StringToEncrypt;
for(int i=0;i<temp.length();++i){
temp[i]=static_cast<int>(temp[i])-(i+i);
}
std::cout<<temp<<'\n';
}
W linijce 51 jest warunek do do...while. Cokolwiek bym wpisał nigdy nie przechodzi. Próbowałem kilku różnych kombinacji i nic nie działa .
Prosiłbym o szybką pomoc.
Pozdrawiam.