Irgendwie funktioniert das nicht



  • Ich bin ein ziemlicher C-Neuling und wollte eine Funktion schreiben, die 6 Variablen im Float-Format vom Benutzer empfängt und sie dann zurückgibt. Irgendwie funktioniert die aber nicht:

    //float gleichungsabfrage(float a1, float b1, float c1, float a2, float b2, float c2){
    // printf("1.Gleichung:\n\t\ta: ");
    // scanf("%f",&a1);
    // printf("\n\t\tb: ");
    // scanf("%f",&b1);
    // printf("\n\t\tc: ");
    // scanf("%f",&c1);
    // printf("\n1.Gleichung: %fx + %fy = %f\n",a1,b1,c1);
    // printf("\n2.Gleichung:\n\t\ta: ");
    // scanf("%f",&a2);
    // printf("\n\t\tb: ");
    // scanf("%f",&b2);
    // printf("\n\t\tc: ");
    // scanf("%f",&c2);
    // printf("\n2.Gleichung: %fx + %fy = %f",a2,b2,c2);
    // return a1,b1,c1,a2,b2,c2;



  • In C kann eine Funktion nur eine Variable zurückgeben.

    Aber es gibt andere Möglichkeiten.
    Du kannst der Funktion die Adresse der Variablen übergeben (Pointer), so wie es auch bei scanf gemacht wird.

    Oder du steckst alle Werte in eine struct. Die gilt dann als eine Variable.

    Es geht auch noch mit einem Array. Aber da übergibst du sowieso die Adresse.



  • TheNikmaster2 schrieb:

    Irgendwie funktioniert die aber nicht:

    //float gleichungsabfrage(float a1, float b1, float c1, float a2, float b2, float c2){
    // printf("1.Gleichung:\n\t\ta: ");
    // scanf("%f",&a1);
    // printf("\n\t\tb: ");
    // scanf("%f",&b1);
    // printf("\n\t\tc: ");

    // return a1,b1,c1,a2,b2,c2;

    Der Befehl scanf macht es doch schon vor wie es geht !!

    int gleichungsabfrage(float *a1, float *b1, float *c1, float *a2, float *b2, float *c2)
    {
      printf("1.Gleichung:\n  ta: ");
      scanf("%f", a1);
      printf("  tb: ");
      scanf("%f", b1);
    
      // . . . 
    
      return 0;
    }
    
    int main(void)
    {
        float a1, b1, c1, a2, b2, c2;
    
        int erg = gleichungsabfrage(&a1, &b1, &c1, &a2, &b2, &c2);
    
        return 0;
    }
    


  • Vielen Dank für eure schnelle Antwort.


Anmelden zum Antworten