• 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

0 głosów
58 wizyt
pytanie zadane 26 kwietnia 2018 w C i C++ przez Hiskiel Pasjonat (22,880 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,680 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,880 p.)
Kurcze.. Takie głupie błędy.

Dziękuję.

Podobne pytania

0 głosów
3 odpowiedzi 181 wizyt
pytanie zadane 11 października 2018 w C i C++ przez Vitall Początkujący (330 p.)
0 głosów
1 odpowiedź 134 wizyt
pytanie zadane 28 sierpnia 2016 w JavaScript, jQuery, AJAX przez Adam Jakś Dyskutant (9,050 p.)
0 głosów
0 odpowiedzi 97 wizyt
pytanie zadane 23 stycznia 2018 w C i C++ przez niezalogowany
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

64,233 zapytań

110,623 odpowiedzi

231,914 komentarzy

46,972 pasjonatów

Przeglądających: 222
Pasjonatów: 16 Gości: 206

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...