Powrót do zadania, nie petlą.
Ostatnio zmodyfikowano 2011-01-29 14:07
Krump Temat założony przez niniejszego użytkownika |
» 2011-01-26 22:35:16 Zacznijmy od tego, że przy tym: while( !( cin >> a ) || c )
Piszczy przy konwertowaniu alert, o dwóch typach zmiennych i po kompilacji. Nie wiem czemu ale w while nie przyjmuje dwóch typów zmiennych w warunku. a to zmienna typu int, liczbowa c to zmienna typu string, tekstowa |
|
DejaVu |
» 2011-01-26 23:54:48 Zamiast c napisz !c.empty() |
|
Krump Temat założony przez niniejszego użytkownika |
» 2011-01-27 18:31:38 Okey, a mógłbyś powiedzieć na jakiej zasadzie działa ta negacja? bo wiem, co znaczy empty(), ale w tym przypadku nie ogarniam bo wiesz suche komendy ;p A i jak mam skonstruować potem warunek kiedy napis i kiedy liczba, bo próbuje na różne sposoby i nie wchodzi i takie błędy są do poszczególnego zapisu. PS. Deklaracja c: while( !( cin >> a ) || !c.empty() ) { if( c ) { cout << "Hasło/Pin to: " << b << endl << endl; getch(); } else { cin.clear(); cin.sync(); system( "cls" ); cout << "Hasło/Pin tylko cyfrowy!" << endl << "Podaj Hasło/Pin: "; } }
error C2451: conditional expression of type 'std::string' is illegal while( !( cin >> a ) || !c.empty() ) { if( a == c ) { cout << "Hasło/Pin to: " << b << endl << endl; getch(); } else { cin.clear(); cin.sync(); system( "cls" ); cout << "Hasło/Pin tylko cyfrowy!" << endl << "Podaj Hasło/Pin: "; } }
error C2678: binary '==' : no operator found which takes a left-hand operand of type 'int' (or there is no acceptable conversion) 1> D:\Programy\Visula C++\VC\include\exception(470): could be 'bool std::operator ==(const std::_Exception_ptr &,const std::_Exception_ptr &)' 1> D:\Programy\Visula C++\VC\include\exception(475): or 'bool std::operator ==(std::_Null_type,const std::_Exception_ptr &)' 1> D:\Programy\Visula C++\VC\include\exception(481): or 'bool std::operator ==(const std::_Exception_ptr &,std::_Null_type)' 1> D:\Programy\Visula C++\VC\include\system_error(408): or 'bool std::operator ==(const std::error_code &,const std::error_condition &)' 1> D:\Programy\Visula C++\VC\include\system_error(416): or 'bool std::operator ==(const std::error_condition &,const std::error_code &)' 1> while trying to match the argument list '(int, std::string)' while( !( cin >> a ) || !c.empty() ) { if( c == true ) { cout << "Hasło/Pin to: " << b << endl << endl; getch(); } else { cin.clear(); cin.sync(); system( "cls" ); cout << "Hasło/Pin tylko cyfrowy!" << endl << "Podaj Hasło/Pin: "; } }
error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion) 1> D:\Programy\Visula C++\VC\include\exception(470): could be 'bool std::operator ==(const std::_Exception_ptr &,const std::_Exception_ptr &)' 1> D:\Programy\Visula C++\VC\include\exception(475): or 'bool std::operator ==(std::_Null_type,const std::_Exception_ptr &)' 1> D:\Programy\Visula C++\VC\include\exception(481): or 'bool std::operator ==(const std::_Exception_ptr &,std::_Null_type)' 1> D:\Programy\Visula C++\VC\include\system_error(408): or 'bool std::operator ==(const std::error_code &,const std::error_condition &)' 1> D:\Programy\Visula C++\VC\include\system_error(416): or 'bool std::operator ==(const std::error_condition &,const std::error_code &)' 1> while trying to match the argument list '(std::string, bool)' |
|
DejaVu |
» 2011-01-28 00:53:34 To nie PHP, że możesz porównywać łańcuch znaków do innego typu danych. Tutaj musisz porównywać do siebie te same typy danych (czytaj: przekonwertować dane do odpowiedniego formatu jeżeli istnieje taka potrzeba). |
|
Krump Temat założony przez niniejszego użytkownika |
» 2011-01-28 20:28:30 o fail, to muszę zmienną typu string prze konwertować do int ;/ |
|
szyx_yankez |
» 2011-01-28 20:59:27 Nie, lepiej zmień typ int na string . |
|
malan |
» 2011-01-28 21:57:11 @Krump: Co byś powiedział na coś takiego: #include <iostream> #include <string>
int main() { bool quit = false; const std::string PASSWORD = "kurpm"; const std::string PIN = "67241599"; std::string pass; while( !quit ) { std::cout << "Give PIN / password:" << std::endl; std::cin >> pass; if( !std::cin.good() ) { std::cout << ";input error" << std::endl; std::cin.clear(); std::cin.sync(); continue; } if( pass.empty() ||( pass != PASSWORD && pass != PIN ) ) std::cout << "Wrong password!" << std::endl; else { if( pass == PIN ) std::cout << "PIN correct!" << std::endl; else std::cout << "Password correct!" << std::endl; quit = true; } std::cout << std::endl; } std::cout << "Welcome! ;)"; std::cin.sync(); std::cin.get(); return 0; } /edit (29.01.2011, 00:15) Mała poprawka kodu. |
|
jsc |
» 2011-01-28 22:48:12 Twojego continue; mogłoby by nie być i wyszłoby na to samo. |
|
1 « 2 » 3 |