Funktionen
-
Hi,..
ich habe versucht es mir selbst bei zu bringen jedoch mag mich mein compiler nicht(Visual Studio 2005). Ich habe noch nicht so viel Erfagrungen in c++. Jedenfalls wollte ich eine Funktion erstellen und da es ja so ähnlich sein muss wie in pascal(proceduren) oder in Delphi dachte ich mir ich schau mal in einen Tut nach und bring es mir bei. DOch bin dabei gescheiert.
Ich seh da nicht wirklich durch erst definiert man eine Variable so wie auch dann die Funktion heißt und hat dann noch parameter zu benutzen(wenn man sie braucht).Ich wollte fragen, ob mir jemand ein kurzen Script mit kurzer erklärung schreiben könnte,..ich wollte nämlich hinaus das man ein schiff hat,.und das in einer Funktion werte übergibt wie Geschwindigkeit = 100 && Stärke = 10 etc,..
in dann ganz bequem in der main,..immer die Eigendschaften des Schiffes aufrufen kann,...
Danke!!!
-
In C und C++ gibts keine Unterscheidung zwischen Funktion und Prozedur. Das ist in Pascal/Delphi der Fall, aber hier mußt du das schnell vergessen. Es gibt nur Funktionen, die was zurück geben oder ebend nicht. Mehr gibts da nicht zu wissen. Lies dir ein Tutorial zu C++ durch, ich bezweifel das hier jemand erklärt wie C++ funktioniert. Bei konkreten Problemen wird geholfen, aber einen Tutor ersetzt hier niemand.
void foo(); // Funktion ohne Rückgabewert (halt void) int foo(); // Funktion mit Rückgabewert (halt int, kann auch jeder andere Typ sein)Zeig mal was du bisher hast und was konkret schief geht. Deine Frage ist zu allgemein.
-
sieh dich vielleicht mal kurz auf einem der gängigen Tutorials unter Funtkioen um ( z.B www.volkard,de ) Geht ja rasch.
-
wie gesagt habe davon kaum ahnung,..ich würde es so machen:
int schiff(int geschwindigkeit, int starke) { geschwindigkeit = 100; starke = 10 } int _tmain(int argc, _TCHAR* argv[]) { schiff(geschwindigkeit, starke); getch(); return 0; }aber wie gesagt es geht nicht, weil ich versteh das mit den paramentern auch nicht und tut habe ich da durch!
-
Ist garnicht mal so falsch was du da hast, bis auf EINE Sache. Und da wird dir dein Compiler eine passende Fehlermeldung geliefert haben. Schau doch mal nach, was der Compiler an Error-Medlungen bringt! Ich wette, wenn du diese Meldung liest, wird es dir sofort auffallen. Falls nicht, poste mal die Meldung bzw. dann sage ich dir was du machen mußt.
-
ok einmal hab eich ein Simikolion vergessen und dann meint er starke und Geschwindigkeit sind nicht deklariet? wieso habe ich doch oder nicht?

-
Ehm, ok, es sind zwei Sachen falsch. Mein Fehler. Habe nur deine Funktion angeschaut.
Erstmal, fehlendes Semikolon ist eher ein Tippfehler.. sollte logisch sein, das jede Anweisung damit abgeschlossen wird.
Aber eigentlich fehlt deiner Funktion ein return! Denn du hast eine Funktion mit einem int-Rückgabetyp geschrieben:
// int vor schiff??? Heißt du willst was zurück geben!!! int schiff(int geschwindigkeit, int starke) { geschwindigkeit = 100; starke = 10; // hier mußt du was mit return zurück geben!!! }Betrachte deine Funktionen separat. Wenn du das hier siehts:
int _tmain(int argc, _TCHAR* argv[]) { schiff(geschwindigkeit, starke); // geschw. und starke?? WO kommen die her? getch(); return 0; }Du kannst nicht zwei Variablen benutzen, die du nicht definiert hast. Mir fällt auf, das du keinen Plan hast, wie ein Programmablauf funktioniert. Das Programm startet bei _tmain und da gibt es die beiden Variablen NOCH nicht. Überhaupt ist mir schleierhaft, was du überhaupt machen willst.
Ich vermute eher sowas:
// da du nichts zurück gibts, mach ein void als Rückgabetyp hin!!! void schiff(int geschwindigkeit, int starke) { // was du hier machen willst, weiß ich nicht // da der Funktionsname schiff praktisch nichtssagend ist. :-( } int _tmain(int argc, _TCHAR* argv[]) { int geschwindigkeit = 100; int starke = 10; schiff(geschwindigkeit, starke); getch(); return 0; }
-
Ich hab das jetzt so gesehen, dass er der Funktion 2 Variablen übergeben werden, die dann initialisiert werden. Das wäre dann:
void schiff(int &geschwindigkeit, int &starke) { geschwindigkeit=100; staerke=10; } int _tmain(int argc, _TCHAR* argv[]) { int geschwindigkeit; int starke; schiff(geschwindigkeit, starke); getch(); return 0; }
-
Hey danke euch,...es funktioniert =D,...so hat doch nun mein Schiff eine GEschwindigkeit und eine Stärke die ich gegen andere Schiffe vergleichen kann oder wenn das Schiff irgednwann mal 200 Geschwindigkeit hat schneller fliegt,..kan man eigendlich die werte in der Funktion erhöhen?
-
Lies mal ein vernünftiges Buch über das Thema, zB. May: Grundkurs Softwareentwicklung mit C++. Da ist nämlich mit Grafiken gezeigt, wie man das richtig macht. Nur im Blauen rumstochern macht keinen Spass - und es kostet unnütze Zeit. Das frustet doch wohl, oder?
Gruss Jerry
-
void schiff(int &geschwindigkeit, int &starke)
{
geschwindigkeit=100;
starke=10;
cout << "Geschwindigkeit: " << geschwindigkeit << "\tStaerke: " << starke<< endl;cout << "Geschwindigkeit neu setzen: "; cin >> geschwindigkeit;
cout << "Staerke neu setzen: "; cin >> starke;
cout << "Geschwindigkeit: " << geschwindigkeit << "\tStaerke: " << starke<< endl;
}aber jerry hat schon recht..