Skocz do zawartości

PROBLEM Z IF ELSE


Trust

Recommended Posts

Mam problem. Otóż powiedzmy że napisałem:

cout<<"\n\n\t\tWRITE PASSWORD : "<<endl;
char pass[strlen(tab1)];
cin>>pass[strlen(tab1)];      
cout<<"\n\t\t\tPRESS ENTER"<<endl;
cin.get();

if(pass==tab1)
{
system("CLS");
cout<<"\n\n\t\t\ CONGRATULATIONS MASTER!!!"<<endl;
system("PAUSE");

}

i jak program zkompiluje to dziala ale nie do konca bo jak podam wartosc pass identycznom jaka jest w tab1

if(pass==tab1)

to konczy progsa jakbym podal zly wynik.
prosze o szybką pomoc :)

Link do komentarza
Udostępnij na innych stronach

W C++ napisy przechowywane są w postaci tablic char[].

Jeżeli zapisujesz:

char *str1,*str2;
if(str1==str2)

to porównujesz nie zawartość tablicy do której odwołują się wskaźniki, ale czy wskaźniki odwołują się do tego samego adresu. Powinieneś napisać:

char *str1,*str2;
if(!strcmp(str1,str2))
{
 //hasło poprawne
}
else //hasło niepoprawne

funkcja int strcmp(const char *str1,const char *str2) porównuje dwa ciągi znaków i zwraca 0 jeśli są takie same.

Link do komentarza
Udostępnij na innych stronach

Z tego co widze tab1 i pass sa to tablice zankow i do porownania stringow nie mozesz uzyc instrukcji

if( tab1 == pass )  // zle

Do porownania stringow uzywaj funkcji:

int strcmp(
const char *string1,
const char *string2
);

Jezli wartosci zwrocona bedzie 0 to dwa lancuchy znakow sa identyczne.

if( (strcmp(tab1, pass)) == 0)
{
     cout << "Haslo ok";
}

Pozdrawiam mam nadzieje ze cos pomoglo :), jakby co to pisz.

Link do komentarza
Udostępnij na innych stronach

Ja bym sie jeszcze czepil tego:

char pass[strlen(tab1)]; 
cin>>pass[strlen(tab1)];  

szczególnie to tej 2 lini.
Jak podajesz cin >> pass[sizeof(tab1)] to podajesz element pierwszy za ostatnim typu char. Podaj cin >> pass;

Troche dziwne, ze to Ci sie kompiluje bo z tego co ja wiem to rozmiar tablicy musi byc staly i znany juz w ciagu kompilacji. Chyba, ze uzywasz kompilatora ze zgodnoscią C99. Napisz jak wyglada deklaracja i inicjalizacja tab1.

pozdrawiam

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...