[C/C++] Variable an andere Funktion übergeben

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Mooshka, 14. Februar 2009 .

  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.
     
  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.
     
  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);
    }
     
  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.
     
  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;
    }
     
  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
     
  7. 14. Februar 2009
    AW: Variable an andere Funktion übergeben

    Dann hast du's jetzt also hingekriegt?
     
  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
     
  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; ?
     
  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]);
     
  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.
     
  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.
     
  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)
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.