Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Funktionsaufruf

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
22.03.2004, 16:02 Uhr
Cebinem



Hallo!
Ich habe ein Problem bei meinem Programm. Also, ich will, dass das Programm eine eingebene Zahl verdoppelt und dann das Ergebnis ausgibt. Das ganze soll mit der Funktion ("int Verdopplung(int);") und mit dem "return 2 * Eingabe" funktionieren, weil ich bisher nur mit int main() gearbeitet hab und ich will es aber mal anders probieren. Der nachfolgende Quellcode zeigt keine Fehler oder
Warnungen beim kompilieren an, aber wenn ich z. B. die Zahl 12 eingebe erscheint nichts und gebe ich nochmal 12 ein beendet sich das Programm.

Nun meine Fragen:
1. Hab ich irgendwo vergessen die Funktion int Verdopplung(int Eingabe) in int main() aufzurufen?
2. Hab ich irgendwo was vergessen oder an der falschen Stelle geschrieben?
3. Funktioniert return 2 * Eingabe; überhaupt oder ist das überhaupt gültig?
4. Ist Eingabe = Verdopplung(Eingabe); ein Funktionsaufruf für die Funktion int Verdopplung(int Eingabe)?


Hier der gesamte Quellcode:


C++:
#include <iostream>
using namespace std;
int Verdopplung(int);
int main()
{
int Eingabe;
cout << "Dieses Programm verdoppelt eine Zahl.\n\n";
cout << "Bitte geben sie eine Zahl ein: " << endl;
cin >> Eingabe;
cout << "" << endl;

Eingabe = Verdopplung(Eingabe);
cout << "Das Ergebnis lautet: " << Eingabe << endl;
return 0;
}

int Verdopplung(int Eingabe)
{
cin.ignore();
cin.get();
return 2 * Eingabe;
}



Wenn es geht, sollte das Programm mit zwei Funktionen (int main() und int Verdopplung(int) und dem return 2 * Eingabe; funktionieren. Aber wenn ihr so den Fehler nicht beheben könnt und der Quellcode vielleicht ohne die zwei Funktionen geschrieben werden muss, dann ist das zwar schade aber auch ok.

Hier noch ein paar Daten von mir:
Betriebssystem: Windows XP Professional
Compiler: DEV-C++ 4.9.8.0

Ich wäre sehr dankbar für eure Hilfe!!!!!!!!!!!!!!!!!!!!!!!

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.03.2004, 16:10 Uhr
KaraHead



Hi, also so geht's bei mir:

C++:
#include <iostream>
#include <stdlib.h>
using namespace std;
int Verdopplung(int);
int main()
{
int Eingabe;
cout << "Dieses Programm verdoppelt eine Zahl.\n\n";
cout << "Bitte geben sie eine Zahl ein: " << endl;
cin >> Eingabe;
cout << "" << endl;

Eingabe = Verdopplung(Eingabe);
cout << "Das Ergebnis lautet: " << Eingabe << endl;
system("PAUSE"); /*sorgt dafür dass das programm nicht gleich beendet wird*/
return 0;
}

int Verdopplung(int Eingabe)
{
/*cin.ignore(),cin.get() löschen*/
return (2 * Eingabe);  /*klammern setzten ist sicherer*/
}


Dieser Post wurde am 22.03.2004 um 16:12 Uhr von KaraHead editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.03.2004, 16:48 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


interessant ist an der stelle vielleicht das ein multiplizeren mit zwei das gleich ist wie eine binäre zahl um eine stelle nach links zu shiften

C++:
return Eingabe<<1;


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.03.2004, 17:18 Uhr
Cebinem



DANKE für eure Hilfe!!!!!!!!!!!!!!!

Also das Programm funktioniert jetzt! Es geht jetzt, weil ich noch cin.ignore(); und cin.get(); am Ende der main()-Funktion eingefügt habe, sonst wartet das Programm vergebens auf eine Eingabe und bricht ab. Es geht auch ohne #include <stdlib.h> und ohne system("PAUSE");. Bei system("PAUSE");
erscheint noch die Zeile: "Drücken sie eine beliebige Taste . . ." und das wollte ich nicht unbedingt.

Hier ist der nun funktionierende Quellcode:


C++:
#include <iostream>
using namespace std;
int Verdopplung(int);
int main()
{
int Eingabe;
cout << "Dieses Programm verdoppelt eine Zahl.\n\n";
cout << "Bitte geben sie eine Zahl ein: " << endl;
cin >> Eingabe;
cout << "" << endl;

Eingabe = Verdopplung(Eingabe); /* Ist dies der Funktionsaufruf der Funktion
"int Verdopplung(int Eingabe)"? siehe unten */

cout << "Das Ergebnis lautet: " << Eingabe << endl;
cin.ignore(); // hab ich noch eingefügt
cin.get(); // hab ich auch noch eingefügt
return 0;
}

int Verdopplung(int Eingabe)
{
return (2 * Eingabe); /* vor dieser Zeile hab ich cin.ignore(); und cin.get(); weggemacht, weil man sonst mehrmals Enter drücken muss, bis die Ausgabe erfolgt */
}



Ich hab jetzt nur noch eine Frage:

Ist Eingabe = Verdopplung(Eingabe); ein Funktionsaufruf der Funktion
int Verdopplung(int Eingabe)?

An Windalf: Warum ist dies so? Es wäre auch sehr interessant zu wissen, wie dies funktioniert. Wenn es nicht zu viel Umstände macht, kannst du mir das ja mal erkären. DANKE!

DANKE für alle Hilfe und Tipps!!!!!!!!!!!!!!!!!!!

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.03.2004, 17:20 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Das liegt daran das die zahlen binär repäsentiert werden....
wenn du in dezimalsystem um eine stelle verschiebst ist es je nachdem ob du das nach rechts oder nach links macht mit 10 mulitplizieren oder durch 10 dividieren... wenn du das im binärsystem machst ist das halt analog mit der 2...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.03.2004, 17:36 Uhr
Cebinem



Also ich hab das leider nicht so richtig verstanden. Warum im Dezimalsystem mit 10 oder war das nur ein Beispiel? Ich hab nicht ganz so viel Ahnung mit dem Binärsystem und es wäre schön, wenn du mir mal ein Beispiel mit den "Zahlenverschiebungen" im Dezimal- bzw. Binärsystem geben könntest.

Nochmal zurück zum Funktionsaufruf, kannst du mir bitte die folgende Frage beantworten:

Ist Eingabe = Verdopplung(Eingabe); ein Funktionsaufruf der Funktion
int Verdopplung(int Eingabe)?

DANKE für eure Hilfe!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.03.2004, 17:45 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


also wenn ich z.b. die zahl 4711 mit 10 multipliziere ist das das gleiche als wenn ich hinten eine 0 ranhänge also einfach eine stelle nach links schieben.
um mit 100 zu multiplizieren einfach 2 stellen nach links schieben. Im kopf rechnest du das doch auch nicht anders....

das liegt daran das 4711 = 4*1000 + 7*100 * 1*10 * 1 ist = 4*10^3 + 7*10^2 + 1*10^1 +1*10^0...

so wenn du zahlen im binär (zweier)-system darstellst dann sind die stellen immer eine potenz von 2

also 1001 ist dann 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0

so wenn ich die zahl jetzt um eine stelle nach links shifte dann ist das wie mit 2 multiplizieren

10010 = 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.03.2004, 18:16 Uhr
Cebinem



DANKE für deine ausführliche Erklärung!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Perfekt wäre jetzt noch, wenn du mir die Frage beanworten könntest, ob:

Eingabe = Verdopplung(Eingabe); ein Funktionsaufruf der Funktion
int Verdopplung(int Eingabe) ist?

DANKE das ihr euch die Zeit nehmt mir zu helfen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.03.2004, 18:18 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


jo was sollte es sonst sein
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.03.2004, 18:29 Uhr
Cebinem



Ja hast recht, mich hat nur verwirrt, dass mein erster Quellcode (siehe oben) nicht zu kompilieren ging aber das hat sich ja auch erledigt! Mein Programm funktioniert jetzt und jetzt weiß ich auch das Eingabe = Verdopplung(Eingabe); ein Funktionsaufruf ist!

an alle!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

MFG
Cebinem
--
Jetzt sind wir hier, was jetzt geschieht, geschieht uns. - Anna Seghers
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: