Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Powrót do zadania, nie petlą.

Ostatnio zmodyfikowano 2011-01-29 14:07
Autor Wiadomość
Krump
Temat założony przez niniejszego użytkownika
» 2011-01-26 22:35:16
Zacznijmy od tego, że przy tym:

C/C++
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
P-27185
DejaVu
» 2011-01-26 23:54:48
Zamiast c napisz !c.empty()
P-27204
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:
C/C++
string c = "krump";

C/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
C/C++
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)'
C/C++
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)'
P-27242
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).
P-27275
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 ;/
P-27328
szyx_yankez
» 2011-01-28 20:59:27
Nie, lepiej zmień typ
int
 na
string
.
P-27336
malan
» 2011-01-28 21:57:11
@Krump: Co byś powiedział na coś takiego:
C/C++
#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.
P-27348
jsc
» 2011-01-28 22:48:12
Twojego continue; mogłoby by nie być i wyszłoby na to samo.
P-27369
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona