Rückgabe von 2 Funktionswerten zurück in Main Funktion über Zeiger
-
Hallo, zuerst hatte ich das Programm über Globale Variablen laufen. Nun versuche ich es mit Rückgabe über Zeiger. Ich verstehe nicht wie die Rückgabe in der Main aussehen muss.
Danke im Voraus
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int freier_fall(double t);
int main(void)
{
double t;
double vel, weg;
printf ("Sekunden: ");
scanf("%lf", &t);
if(freier_fall(t) == 0)
{
printf ("Eingabefehler!\n");
return 0;
}
vel = freier_fall (t);
weg = freier_fall (t);
printf("v = %.2fm/s\n", vel);
printf("s = %.2fm\n", weg);
return 0;
}
int freier_fall(double t)
{
double werte[2];
if(t < 0 ) return 0;
werte[0]= 9.81 * t;
werte[1] = 0.5 * 9.81 * t *t;
return *werte;
}
-
Man kann nur einen Wert eines Typens über die return-Anweisung zurück geben. Da kannste dich auf den Kopf stellen, auch mit Zeigern geht das nicht.
Du kannst nun (i) deine Daten zu einem Typen zusammenfassen (z.B. struct) und das zurückgen, oder (ii) du gibst deine Daten über Argumente der Funktion zurück (z.B. reference)
(i)
struct phys_data_t { double velo; double disp; }; phys_data_t free_fall(double time) { phys_data_t data; data.velo = 9.81 * time; data.disp = data.velo * time * 0.5; return data; }(ii)
void free_fall(double time, double& velo, double& disp) { velo = 9.81 * time; disp = velo * time * 0.5; }
-
Ich bin nicht ganz sicher, ob ich die Aufgabe verstanden habe,
#include <stdio.h> void freier_fall(double t,double *v,double* s) { *v= 9.81 * t; *s = 0.5 * 9.81 * t *t; } int main(void) { double t; printf ("Sekunden: "); scanf("%lf", &t); if(t == 0) { printf ("Eingabefehler!\n"); return 0; } double vel,te; freier_fall (t,&vel,&te); printf("v = %.2fm/s\n", vel); printf("s = %.2fm\n", te); return 0; }edit:
Ah, ich hab's glaube ich.#include <stdio.h> bool freier_fall(double t,double *v,double* s) { if(t<0) return false; *v= 9.81 * t; *s = 0.5 * 9.81 * t *t; return true; } int main(void) { double t; printf ("Sekunden: "); scanf("%lf", &t); double vel,te; if(!freier_fall (t,&vel,&te)) { printf ("Eingabefehler!\n"); return 0; } printf("v = %.2fm/s\n", vel); printf("s = %.2fm\n", te); return 0; }
-
Vielen Dank liebe Leute! Hat mich auf jeden Fall weiter gebracht!
Nach Deiner Lösung mit Void hatte ich gesucht volkardGruß
Felix