• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C++] Błędne wyrażenie boolowskie w do...while

VPS Starter Arubacloud
0 głosów
421 wizyt
pytanie zadane 26 kwietnia 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)

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.

1 odpowiedź

+2 głosów
odpowiedź 26 kwietnia 2018 przez Qwerty96 Stary wyjadacz (13,580 p.)
wybrane 26 kwietnia 2018 przez Hiskiel
 
Najlepsza
Taki warunek będzie zawsze spełniony. Powinno być && zamiast ||.
komentarz 26 kwietnia 2018 przez Hiskiel Pasjonat (22,830 p.)
Kurcze.. Takie głupie błędy.

Dziękuję.

Podobne pytania

0 głosów
3 odpowiedzi 1,679 wizyt
pytanie zadane 11 października 2018 w C i C++ przez Vitall Początkujący (400 p.)
0 głosów
1 odpowiedź 114 wizyt
pytanie zadane 5 sierpnia 2019 w JavaScript przez Zaqu93 Gaduła (4,850 p.)
0 głosów
1 odpowiedź 347 wizyt
pytanie zadane 28 sierpnia 2016 w JavaScript przez Adam Jakś Dyskutant (8,940 p.)

93,078 zapytań

142,041 odpowiedzi

321,445 komentarzy

62,422 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...