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

tablica ASCII

Ostatnio zmodyfikowano 2017-05-23 14:50
Autor Wiadomość
adrian.paz
Temat założony przez niniejszego użytkownika
tablica ASCII
» 2017-05-22 13:31:28
Witam! mam pytanie dotyczące sprawdzania mojego hasła. Wszystko działa dobrze, chciałbym tylko, żeby klawisz BACKSPACE spełniał swoją pierwotną funkcję i nie był traktowany jako znak. Wszystko inne wiem, że będzie, chciałbym jednak aby ten jeden klawisz był wyodrębniony :) pomoże ktoś? :D

C/C++
zmiana( 10 ); //zmiana koloru
char login[ 10 ];
login[ 0 ] = 'a';
login[ 1 ] = 'd';
login[ 2 ] = 'r';
login[ 3 ] = 'i';
login[ 4 ] = 'a';
login[ 5 ] = 'n';
login[ 6 ] = '.';
login[ 7 ] = 'p';
login[ 8 ] = 'a';
login[ 9 ] = 'z';
char haslo[ 4 ];
haslo[ 0 ] = '1';
haslo[ 1 ] = '7';
haslo[ 2 ] = '2';
haslo[ 3 ] = '8';
cout.width( 80 );
cout << right << "WITAJ W PROGRAMIE AUTORSTWA ADRIANA PAZ! " << endl << endl << endl;
Sleep( 1000 );
cout << "Podaj login i haslo, zebym wiedzial kim jestes :)" << endl << endl;
cout << "Login: ";
zmiana( 14 );
for( int i = 0; i < 10; i++ )
{
    login[ i ] = getch();
    cout << "*";
}
zmiana( 10 );
cout << "\n" << "Haslo: ";
zmiana( 14 );
for( int i = 0; i < 4; i++ )
{
    haslo[ i ] = getch();
    cout << "*";
}
zmiana( 10 );

if( login[ 0 ] == 'a' )
if( login[ 1 ] == 'd' )
if( login[ 2 ] == 'r' )
if( login[ 3 ] == 'i' )
if( login[ 4 ] == 'a' )
if( login[ 5 ] == 'n' )
if( login[ 6 ] == '.' )
if( login[ 7 ] == 'p' )
if( login[ 8 ] == 'a' )
if( login[ 9 ] == 'z' )

if( haslo[ 0 ] == '1' )
if( haslo[ 1 ] == '7' )
if( haslo[ 2 ] == '2' )
if( haslo[ 3 ] == '8j' )
{
    system( "cls" );
    zmiana( 9 );
    cout.width( 84 );
    cout << endl << endl;
    cout << right << "<<<<<Tozsamosc potwierdzona! Witaj Adrian!>>>>>" << endl << endl << endl;
P-161412
Rashmistrz
» 2017-05-22 16:17:43
http://www.cplusplus.com/doc​/ascii/
Tam gdzie masz getch() sprawdzaj czy
otrzymałeś kod backspace i rób co trzeba.

Jak zaimplementowałeś funkcję zmiana()?
Zmienia ona kolor wypisywania czy całą konsolę?
P-161420
latajacaryba
» 2017-05-22 16:58:30
To ja tylko dodam, że
C/C++
char login[ 10 ];
login[ 0 ] = 'a';
login[ 1 ] = 'd';
login[ 2 ] = 'r';
login[ 3 ] = 'i';
login[ 4 ] = 'a';
login[ 5 ] = 'n';
login[ 6 ] = '.';
login[ 7 ] = 'p';
login[ 8 ] = 'a';
login[ 9 ] = 'z';

równa się

C/C++
char login[ 11 ] = "adrian.paz"; // jesli to ma byc string, 11 bo 10 znakow i znak null
char login[ 10 ] { 'a', 'd', 'r', '...' }; // jesli zwykla tablica char

Poza tym... po co używasz tablic char zamiast stringów?
P-161422
adrian.paz
Temat założony przez niniejszego użytkownika
tablica ASCII
» 2017-05-22 22:26:04
Dziękuje wszystkim za odpowiedzi :) Dlaczego używam tablic char? Ponieważ chce zamiast litery/cyfry wyświetlać gwiazdkę. Dzisiaj wpadłem na ten pomysł bo już spać przez to nie mogłem jak to zrobić :D Jak używam cin>> to pokazuje mi wpisywany tekst, a funkcja getch() tylko pobiera. Nie wiem jak inaczej zrobić żeby wyświetlało gwiazdkę. Funkcji zmiana() używam do zmiany koloru wypisywanego tekstu.

Do latajacaryba>>Zapomnialem, że wogóle tak można :D
P-161440
Rashmistrz
» 2017-05-22 22:45:56
Funkcji zmiana() używam do zmiany koloru wypisywanego tekstu.
Wiem, że jest do tego, ale chcę wiedzieć
co jest w środku funkcji tak przy okazji.
P-161441
adrian.paz
Temat założony przez niniejszego użytkownika
tablica ASCII
» 2017-05-22 23:01:39
C/C++
void zmiana( int nr )
{
    HANDLE chwytak;
    chwytak = GetStdHandle( STD_OUTPUT_HANDLE );
    SetConsoleTextAttribute( chwytak, nr );
   
}

a pokazałbyś jak użyć tego backspace? mi się nie udaje nie wiem jak to zrobić :( próbuje coś z cout<<"\b" ale nie działa..
P-161445
Rashmistrz
» 2017-05-23 14:50:36
'\p' to backspace używając znaku ucieczki(backslash).
Oryginalny liczbowy kod znaku to 8.

Jak wydrukujesz to to Ci zje ostatni znak na ekranie,
bodajże włącznie ze znakiem nowej linii.

(W niektórych implementacjach tylko
cofnie kursor i będziesz musiał nadpisać znak.)

(Gdy jest na początku linii to brak efektu.)

EDIT(09:00): Mam ten sam problem,
że mi ten znak specjalny nie działa.
P-161469
« 1 »
  Strona 1 z 1