Forum: Hjälp!!! C++

Forum huvudsida -> Programmering -> Hjälp!!! C++

Sidor: 1

Till botten

nathler 19:50 - 4:e Maj 2006 | Post #1
Medlem
Inlägg: 6


Skicka PM
Hej jag använder Dev-C++.

När jag kör det här programmet så kör programet om void del_1() efter den kört int del_1_1() eller int del_1_2(). Den fortsätter inte ner på int main().
Hur kommer det sig?


#include <iostream>

using std::cout;
using std::cin;
using std::string;

//////////////////////////////////////////////////////////////////////

string deli_1;

void del_1();
int del_1_1();
int del_1_2();
void del_2();

//////////////////////////////////////////////////////////////////////

int del_1_2()
{
cout << "Du flydde fegis!!!";
return 0;
}


int del_1_1()
{
cout << "Du d'o'da apan!!!";
return 0;
}

void del_1()
{

cout << "En apa anfaller dig!!! (skriv 1 f'o'r att anfalla och 0 f'o'r att fly!)";
cin >> deli_1;
if (deli_1 == "1")
{
del_1_1(); // köra del_1_1() om du skriver 1
}
else if (deli_1 == "0")
{
del_1_2(); // köra del_1_2() om du skriver 0
}
else;
{
del_1(); // Jag vill kör om del_1() om svaret inte är 1 eller 0
}
return;
}

void del_2()
{
cout << "Du klara spelet";
return;
}

int main()
{

del_1();
del_2();

system ("pause");
return 0;
}


-------------------------
Nothing on earth takes forever, but none of your deeds where in vain.



Kekke 20:50 - 4:e Maj 2006 | Post #2
Medlem
Inlägg: 4


Skicka PM
Du har en väldigt massa fel där..
#include <iostream>

using std::cout;
using std::cin;
using std::string;

int deli_1;

void del_1();

void del_1()
{

cout << "En apa anfaller dig!!! (skriv 1 fx94r att anfalla och 0 fx94r att fly!)n";

cin >> deli_1;

if (deli_1 == 1)
cout << "Du dx94da apan!!!n";

else if (deli_1 == 0)
cout << "Du flydde fegis!!!n";

cout << "Du klarade spelet";
}


int main()
{

del_1();


cin.get();
cin.get();
return 0;
}

Det där borde funka..

Försök skriva koden med mer mellanrum och renare så andra kan förstå din kod.

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

Senast redigerad 20:53 - 4:e Maj 2006


Nissebosselasse 20:57 - 4:e Maj 2006 | Post #3
Medlem
Inlägg: 490


Skicka PM
Först: ta bort semikolonet vid else-satsen. I C/C++ räknas faktiskt semikolonet (;) som en fullständig, egen sats.

Sen: main-funktionen anropas vid uppstarten av programmet. Den kommer alltså köras igång först av allt, oavsett vad du säger.

Jag misstänker att du ser programkörningen strikt uppifrån och ner? Det gäller bara inuti en funktionskropp.

-------------------------
http://pushingcows.se
Gula Nallen



nathler 21:14 - 4:e Maj 2006 | Post #4
Medlem
Inlägg: 6


Skicka PM
tack men problemet med din(kekke) verision är att den inte kör om del_1 om man svarar annat än 1 eller 0. jag vill gärna att den skall kört om del_1 om man svarar något annat än 1 eller 0. som den gör tack vare
else
{
del_1;
}
och så skulle jag uppskata om ni kunde förklara vad som är fel på koden. Varför forstätter den inte på int main()?
För den borde ju köra int main() när den utfört del_1 eller hur?

-------------------------
Nothing on earth takes forever, but none of your deeds where in vain.



Nissebosselasse 21:24 - 4:e Maj 2006 | Post #5
Medlem
Inlägg: 490


Skicka PM
Läste du igenom min post...?

Jag kompilerade källkoden under Visual C++, och den funkade efter jag gjort #include <string> överst, samt tagit bort semikolonet (som jag nämnde).

Källkoden blir således så här:
  1.  
  2. #include <iostream>
  3. #include <string>
  4.  
  5. using std::cout;
  6. using std::cin;
  7. using std::string;
  8.  
  9. //////////////////////////////////////////////////////////////////////
  10.  
  11. string deli_1;
  12.  
  13. void del_1();
  14. int del_1_1();
  15. int del_1_2();
  16. void del_2();
  17.  
  18. //////////////////////////////////////////////////////////////////////
  19.  
  20. int del_1_2()
  21. {
  22. cout << "Du flydde fegis!!!";
  23. return 0;
  24. }
  25.  
  26.  
  27. int del_1_1()
  28. {
  29. cout << "Du d'o'da apan!!!";
  30. return 0;
  31. }
  32.  
  33. void del_1()
  34. {
  35. cout << "En apa anfaller dig!!! (skriv 1 f'o'r att anfalla och 0 f'o'r att fly!)";
  36. cin >> deli_1;
  37. if (deli_1 == "1")
  38. {
  39. del_1_1(); // köra del_1_1() om du skriver 1
  40. }
  41. else if (deli_1 == "0")
  42. {
  43. del_1_2(); // köra del_1_2() om du skriver 0
  44. }
  45. else
  46. {
  47. del_1(); // Jag vill kör om del_1() om svaret inte är 1 eller 0
  48. }
  49. return;
  50. }
  51.  
  52. void del_2()
  53. {
  54. cout << "Du klara spelet";
  55. return;
  56. }
  57.  
  58. int main()
  59. {
  60. del_1();
  61. del_2();
  62.  
  63. system ("pause");
  64. return 0;
  65. }

Frågan återstår då om du är införstådd med hur ett C++-program utförs? Att main anropas först när programmet körs igång?

En annan sak: i else-satsen, där del_1 anropas, finns ett litet problem, nämligen rekursion. Funktionen anropar nämligen sig själv, och för varje anrop fylls minnet upp. Du borde göra om hela den funktionen till en loop istället.

-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 21:26 - 4:e Maj 2006


nathler 21:51 - 4:e Maj 2006 | Post #6
Medlem
Inlägg: 6


Skicka PM
Tack så mycket för hjälpen jag och min kompis har suttit jätte länge och undrat varför den loopa del_1 och så var d bara ett semicolon...
man tack igen Smiley

-------------------------
Nothing on earth takes forever, but none of your deeds where in vain.



Sidor: 1

Forum huvudsida -> Programmering -> Hjälp!!! C++
Atom feed

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