Avatar billede ttn- Nybegynder
21. juli 2003 - 20:07 Der er 20 kommentarer og
1 løsning

Et password system

Jeg er jo ikke en haj til c++, men sidder og leger med et lille enkelt password system i en while løkke...

int password = 666, passwordtjek;
int Bredde, Laengde;
// Password til programmet
while(password != passwordtjek)
  { cout << "Indtast kodeord: ";
  cin >> passwordtjek;
  }
  cout << "Korrekt!\n\n\n\n";

min kode ser sådan her ud - men som I sikkert har lagt mærke til, så er passwordet et tal, og hver gang jeg skriver char password = mikael, så bliver der fejl...
Den kode jeg gerne vil komme frem til skal se nogenlunde sådan ud, vil jeg mene:

char password = "Mikael", "passwordtjek";
int Bredde, Laengde;
// Password til programmet
while(password != passwordtjek)
  { cout << "Indtast kodeord: ";
  cin >> passwordtjek;
  }
  cout << "Korrekt!\n\n\n\n";

og lad nu vær med at sige jeg ikke har int main med osv... - dem har jeg ikke gidet at kopiere med ;)!

Og i stedet for bare at skrive koden til mig, så please skriv en forklaring til mig også, da det er den lettest vej en newb som jeg kommer videre på!
Avatar billede arne_v Ekspert
21. juli 2003 - 20:13 #1
Du skal have reklæret nogle strenge.

F.eks. C strenge som bare er nul terminerede char arrays.

char password[] = "Mikael";

gemmer det rigtige password.

char passwordtjek[80];

sætter plads af til det indtastede password.

cin >> passwordtjek;

læser et password ind.

strcmp(password,passwordtjek)==0

tester om de matcher.

Så må du selv kombinere dem.
Avatar billede arne_v Ekspert
21. juli 2003 - 20:15 #2
strcmp kræver include af string.h (eller cstring).
Avatar billede ttn- Nybegynder
21. juli 2003 - 20:17 #3
Okay... min bog har vidst ikke noget med strenge... rimelig grimt - er der en der har et sted hvor jeg evt. kan læse om dette - og arrays,hvilket vidst heller ikke er med i den?!?! Dette vil da være rimelig rart... men prøver lige dit
Avatar billede ttn- Nybegynder
21. juli 2003 - 20:18 #4
og skal lige siges int bredde og laengde bruges til et script jeg har bagefter ;)
Avatar billede arne_v Ekspert
21. juli 2003 - 20:20 #5
Hvis din C++ bog ikke har noget om strenge eller arrays, så vil
jeg mene at den egner sig fortrinligt til optænding i brændeovn !

:-)
Avatar billede arne_v Ekspert
21. juli 2003 - 20:21 #6
Avatar billede arne_v Ekspert
21. juli 2003 - 20:22 #7
Avatar billede ttn- Nybegynder
21. juli 2003 - 20:22 #8
char password[] = "Mikael";
char passwordtjek[80];
// Password til programmet
while( strcmp(password,passwordtjek)==0)
  { cout << "Indtast kodeord: ";
  cin >> passwordtjek;
  }
  cout << "Korrekt!\n\n\n\n";

Når denne kode læses, så skriver den bare korrekt med det samme? :\
Avatar billede ttn- Nybegynder
21. juli 2003 - 20:23 #9
og arne det link der er jo til c? :\
Avatar billede ttn- Nybegynder
21. juli 2003 - 20:23 #10
også er det jo mig der kigger forkert, sry
Avatar billede arne_v Ekspert
21. juli 2003 - 20:24 #12
C char array og alle de dertil knyttede funktioner virker også i C++.
Avatar billede ttn- Nybegynder
21. juli 2003 - 20:25 #13
eller var det nu c? nu er jeg forvirret
Avatar billede arne_v Ekspert
21. juli 2003 - 20:28 #14
Dit test vender forkert.

Du mener:

while( strcmp(password,passwordtjek) != 0 )

så længe de ikke matcher, så spørger du.
Avatar billede arne_v Ekspert
21. juli 2003 - 20:29 #15
Jeg kunne iøvrigt godt finde på at bruge:

do
{
  ...
} while (...);

i stedetfor:

while(...)
{
    .
};

til dette problem.
Avatar billede ttn- Nybegynder
21. juli 2003 - 20:32 #16
nu har du fået 30 point - here ya go :)

Men synes nu den artikel/guide/tutorial er lidt tynd... næsten ingen forklaring, og meget få eksempler - den er desværre lidt skidt til en newbie synes jeg
Avatar billede arne_v Ekspert
21. juli 2003 - 20:34 #17
Er det char array eller STL string du tænker på ?

Jeg kan sikkert finde noget bedre.
Avatar billede ttn- Nybegynder
21. juli 2003 - 20:36 #18
mede den der do, hvordan havde du så tænkt dig at det skulle sættes sammen?

do
{
  cout << "Indtast kodeord: ";
  cin << passwordtjek;
} while( strcmp(password,passwordtjek) !=0);
  cout << "korrekt weeee";

eller måske:

do
{
  cout << "korrekt weeee";
} while( strcmp(password,passwordtjek) !=0);
  cout << "Indtast kodeord: ";
  cin << passwordtjek;

eller en tredje måske? Please svar, og skriv gerne en forklaring da det er det man kommer længst med
Avatar billede arne_v Ekspert
21. juli 2003 - 20:42 #19
do
{
  cout << "Indtast kodeord: ";
  cin << passwordtjek;
} while( strcmp(password,passwordtjek) != 0 );
cout << "korrekt weeee";

og hvordan forklare man hvad den gør ?

Den tekniske forklaring er at while løkker har testet i toppen af løkken,
mens do while løkker har testet i bunden af løkken.

Som en konsekvens af det vil en do while løkke altid blive udført mindst
en gang (men det passer jo også fint med din problem-stilling).

Mere logisk er det:

while(...)
{
  ...
}

så længe betingelse er sand udfør
{
  ...
}

do
{
  ...
} while(...);

udfør
{
    ...
} så længe betingelse er sand

men det er jo stort set bare en oversættelse til dansk.
Avatar billede segmose Nybegynder
22. juli 2003 - 09:14 #20
En af de her er forkert in og out skal vende hver sin vej.

cout << "Indtast kodeord: ";
cin << passwordtjek;
Avatar billede arne_v Ekspert
22. juli 2003 - 09:21 #21
Den sidste vender forkert ja.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester