Forum: problem med funktioner..

Forum huvudsida -> Programmering -> problem med funktioner..

Sidor: 1

Till botten

supermario89 14:38 - 26:e Augusti 2005 | Post #1
Medlem
Inlägg: 12


Skicka PM
jag är ny när det gäller C++ och programmering och jag har ett problem
jag gör en funktion men när jag försöker gå till den säger programmet att den är odeklarerad.

  1. #include<iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::string;
  5. using std::endl;
  6. string username;
  7. string password;
  8. string correct_username;
  9. string correct_password;
  10. string countinue;
  11. string what;
  12. int logged_in();
  13. int logged_in()
  14. {
  15. cout <<"You are logged in" << endl;
  16. cout <<"What do you want do do?" << endl << endl;
  17. cout <<"quit? type: quit" << endl;
  18. cout <<"loggout? type: loggout" <<endl;
  19. cin>> what;
  20. if ((what) == "quit");
  21. {
  22. return 0;
  23. }
  24. if ((what) == "loggout");
  25. {
  26. main(); //funkar inte
  27. }
  28. else
  29. {
  30. logged_in();
  31. }
  32. }
  33. int main();
  34. int main()
  35. {
  36. correct_username = "lindell";
  37. correct_password = "1111";
  38. cout <<"Enter the username: ";
  39. cin >>username;
  40. cout <<"Enter the password: ";
  41. cin >>password;
  42. if ((password == correct_password) && username == correct_username)
  43. {
  44. logged_in();
  45. }
  46. else
  47. {
  48. cout <<"Wrong username or password would you like to continue? " << endl;
  49. cin>> countinue;
  50. if ((countinue) == "yes")
  51. {
  52. main();
  53. }
  54. else
  55. {
  56. return 0;
  57. }
  58. }
  59. }


-------------------------
Ingen signatur!

Senast redigerad 14:38 - 26:e Augusti 2005


Independence 18:07 - 26:e Augusti 2005 | Post #2
Administratör
Inlägg: 1800


Skicka PM
Du kan inte anropa main-funktionen, skriver istället return så kommer du tillbaka till den delen av main därifrån du anropade funktionen.

-------------------------

Vi är riddarna som säger fiskbulle!





ozamosi 18:12 - 26:e Augusti 2005 | Post #3
Administratör
Inlägg: 1129


Skicka PM
Ok, jag ser två saker jag skulle ändra på...

För det första är det inte så bra att låta funktioner anropa varandra på det sättet du gjort. Tanken är att programmet ska testa lösenord i main-funktionen tills man väljer att inte fortsätta, eller hur? Lägg då allt från (inklussive) cout <<"Enter the username: "; till slutet i en loop. Jag skulle skriva den som "while(true)", vilket gör att den kör i all oändlighet. När du vill avsluta, skriv break så ramlar du ut ur loopen.

Du kan göra en motsvarande loop i logged_in()-funktionen, så slipper den anropa sig själv också.

För det andra, det som inte fungerar är att man måste specificera funktionen innan man anropar den. Jag ser att du har sett att man gör det genom att skriva "int main()", men du har inte riktigt förstått poängen tror jag Smiley

Man behöver bara specificera funktionen om den ska anropas av en funktion som ligger högre (vilket gör att du kan (säger inte att du bör dock) ta bort int logged_in();, eftersom den ligger överst). Om funktionen ska anropas av en funktion som ligger högre ska man specificera funktionen innan den som anropar (man brukar specificera funktioner högst upp om man väljer att specificera dem alls. På så sätt nås de av alla)

-------------------------
Ljusblå



Sidor: 1

Forum huvudsida -> Programmering -> problem med funktioner..
Atom feed

Du får inte posta i den här tråden | Till toppen