#1 14. Februar 2009 Variable an andere Funktion übergeben Hier mal die Funktionen: Code: int eingabe2 ( void ) { int b,c; printf("Geben Sie bitte Zahl1 ein: "); scanf_s("%i", &b); printf("Geben Sie bitte Zahl2 ein: "); scanf_s("%i", &c); return b; } int kleiner ( int zahl1, int zahl2) { if( zahl1 < zahl2 ) printf("1"); else printf("0"); printf("\n"); return 0; } Jetzt möchte ich einfach im Hauptprogramm Code: kleiner(b,c); eingeben, sodass er mir das Ergebnis ausspuckt. Wie kann ich das machen? Wenn ich den Inhalt der eingabe2() ins Hauptprogramm einfüge klappt alles. + Multi-Zitat Zitieren
#2 14. Februar 2009 AW: Variable an andere Funktion übergeben Bau dir ne struct mit 2 integern... und gib die zurück... guckst du hier C/C++ - Datentyp struct greetz Jojo... p.s. wenn du noch fragen dazu hast einfach melden. + Multi-Zitat Zitieren
#3 14. Februar 2009 AW: Variable an andere Funktion übergeben Er will eine Zahl zurückgeben, und hat anscheinend nichtmal ne Ahnung, was man mit return genau macht. @ Topic: per return gibst du Werte zurück. Deine Funktion müsste also lauten: Code: int kleiner( int a, int b ) { return (a<b?a:b); } + Multi-Zitat Zitieren
#4 14. Februar 2009 AW: Variable an andere Funktion übergeben Erstmal danke für die Antworten. Aber so ganz versteh ich das noch nicht. Habe jetzt folgendes gemacht: Funktionen: Code: int eingabe2 ( void ) { int b,c; printf("Geben Sie bitte Zahl1 ein: "); scanf_s("%i", &b); printf("Geben Sie bitte Zahl2 ein: "); scanf_s("%i", &c); return b,c; } int kleiner ( int zahl1, int zahl2) { if( zahl1 < zahl2 ) printf("1"); else printf("0"); printf("\n"); return 0; } Hauptprogramm: Code: eingabe2(); kleiner(b,c); Allerdings krieg ich dann den Fehler, dass b und c nicht deklariert sind. + Multi-Zitat Zitieren
#5 14. Februar 2009 AW: Variable an andere Funktion übergeben Richtig. 1. Musst du den return-wert aus Eingabe auch irgendwie speichern. 2. Kannst du immer nur 1 Wert returnen. Entweder du baust dir für die 1. und 2. Eingabe getrennte Funktionen, oder übergibst die Variablen als Referenz, was aber wohl noch nicht deinem Lernstand entspricht. Code: int a=eingabe1(); int b=eingabe2(); Das mit den Returns ist dir auch noch nicht klar: ein returnwert ist ein Wert, den die Funktion sozusagen als Ergebnis zurückgibt. Deine Funktion gibt immer 0 zurück->Sinnlos. Code: int kleiner(int zahl1, int zahl2) { if(zahl1<zahl2) return zahl1; else return zahl2; } + Multi-Zitat Zitieren
#6 14. Februar 2009 AW: Variable an andere Funktion übergeben Aufgabe: Erstellen Sie in Unterprogrammtechnik ein C-Programm mit folgenden Anforderungen: ... ... Erstellen Sie eine Funktion int kleiner ( int zahl1, int zahl2 ). Diese Funktion erhält zwei Zahlen und soll prüfen, ob zahl1 kleiner als zahl2 ist. Ist dies der Fall, so gibt die Funktion den Wert 1 zurück, andernfall 0. ... ... Benutzen Sie möglichst viele Unterprogrammaufrufe. ... Deshalb das printf("1"); bzw. printf("0"); Die Aufteilung in 2 Eingabefunktionen und der Hinweis, was return macht / kann haben geholfen. Danke + Multi-Zitat Zitieren
#7 14. Februar 2009 AW: Variable an andere Funktion übergeben Dann hast du's jetzt also hingekriegt? + Multi-Zitat Zitieren
#8 14. Februar 2009 AW: Variable an andere Funktion übergeben sry, aber der rückgabewert einer funktion ist (man hätte es sich denken können) der RETURN wert der funktion (return -> rückgabe) deine funktion soll nicht printf'n sondern return 0 oder return 1 liefern, je nachdem obs größer oder kleiner ist. wenn es keinen sinnvollen return wert gibt würde die funktion void deklariert werden (kein rückgabewert) aber da es int ist (und da direkt rückgabewert steht *gg) ists sinnlos bei egal welcher eingabe return 0 zu machen und warum machst du nciht einfach die abfragen in die main rein und rufst von dort aus die int kleiner auf, so sparst du dir das mit dem struct denn offensichtlich ist (jedenfalls nach deinen aufgabenauszügen) die eingabefunktion nicht teil der aufgabe. ansonsten falls dus doch so haben willst mach die funktion einfach int eingabe(int i) und in dem printf packste denn i einfach als variable rein (so dass da steht geben sie wert i ein denn hast du eine viel besser anpassbare funktion, die du besser wiederverwenden kannst, als wenn dus so schreibst wie dus hast. und denn sagste einfach int a=eingabe(1); int b=eingabe(2); kleiner(a,b); return 0 edit: verdammt xD hab überlesen das problem sei gelöst, sry + Multi-Zitat Zitieren
#9 14. Februar 2009 AW: Variable an andere Funktion übergeben Code: int kleiner ( int zahl1, int zahl2) { if( zahl1 < zahl2 ) return 1; else return 0; } und dann in der main einfach Code: int d = kleiner(b,c); printf ("%i\d",d); So sollte es aufgabenkonform sein. Gibt es nicht auch noch eine Möglichkeit, dass mit Pointern zu machen? Also int *var; ? + Multi-Zitat Zitieren
#10 14. Februar 2009 AW: Variable an andere Funktion übergeben Klar, aber warum? Höchstens bei der Eingabefunktion könnte das was bringen: Code: void eingabe(int* zahl1) { scanf_s("%i", zahl1); scanf_s("%i", (zahl+1); } int main() { int zahl[2]; eingabe(zahl); kleiner(zahl[0], zahl[1]); + Multi-Zitat Zitieren
#11 14. Februar 2009 AW: Variable an andere Funktion übergeben scanf_s("%i", zahl1); scanf_s("%i", (zahl+1); Da ist ein Fehler, oder? Mit Pointern kriegt man die Eingabe dann schön in eine Funktion. + Multi-Zitat Zitieren
#12 14. Februar 2009 AW: Variable an andere Funktion übergeben Code: scanf_s("%i", (zahl+1); Da fehlt eine Klammer zu. Ansonsten kA, ich programmiere normalerweise c++, mit scanf kenn ich mich nicht aus. Aber es ging doch darum, möglichst viele Funktionsaufrufe zu verwenden. Ansonsten wäre es so natürlich am besten. + Multi-Zitat Zitieren
#13 14. Februar 2009 AW: Variable an andere Funktion übergeben scanf_s("%i", (zahl1+1)); So muss es. Aber was macht denn zahl1+1? Müsste nicht zahl1+4? Weil 4 = sizeof(int) + Multi-Zitat Zitieren