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

Dziękuję.

Podobne pytania

0 głosów
3 odpowiedzi 169 wizyt
pytanie zadane 11 października 2018 w C i C++ przez Vitall Początkujący (330 p.)
0 głosów
1 odpowiedź 132 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
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

62,276 zapytań

108,402 odpowiedzi

226,285 komentarzy

34,908 pasjonatów

Przeglądających: 212
Pasjonatów: 9 Gości: 203

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.

...