• 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,800 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,800 p.)
Kurcze.. Takie głupie błędy.

Dziękuję.

Podobne pytania

0 głosów
3 odpowiedzi 196 wizyt
pytanie zadane 11 października 2018 w C i C++ przez Vitall Początkujący (400 p.)
0 głosów
1 odpowiedź 32 wizyt
pytanie zadane 5 sierpnia w JavaScript, jQuery, AJAX przez Zaqu93 Bywalec (2,530 p.)
0 głosów
1 odpowiedź 141 wizyt
pytanie zadane 28 sierpnia 2016 w JavaScript, jQuery, AJAX przez Adam Jakś Dyskutant (9,050 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

66,319 zapytań

113,057 odpowiedzi

239,193 komentarzy

46,585 pasjonatów

Przeglądających: 143
Pasjonatów: 2 Gości: 141

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.

...