eigene Funktion
-
Hallo,
ich möchte aus den drei Zeilen eine einige Funktion erstellen.
#include <math.hpp> int size = 4; double Nums[]={8798,8709,8604,8439,8522}; double Ergebnis = 0; double Ergebnis2 = 0; double Ergebnis3 = 0; Ergebnis = StdDev( Nums, size); // Standardabweichung Ergebnis2 = Mean( Nums, size); // Mittelwert Ergebnis3 = Ergebnis/Ergebnis2*100; //Ratio à Ergebnis3 = 1,66278106557388
Hier die Funktion:
double Ratio() { char Test[10] ; double Ausgabe ; Ausgabe = (StdDev(Nums, size)) / (Mean(Nums, size))*100; return sprintf (Test,"%.2f", Ausgabe ); }
Zusätzlich will ich den Wert von der Ausgabe nur noch mit zwei Nachkommastellen ausgeben und dahinter ein Prozentzeichen % anzeigen. Ich bekomme aber beim Aufruf von
Ratio() nur 4 heraus und nicht wie erwartet 1,66.
Was mache ich falsch.Danke für jeden Hinweis.
-
Klar kriegst du 4 zurück. Guck mal, was die Hilfe zum Rückgabewert von sprintf sagt!
Welchen Sinn hat eigentlich das char-Array in deiner Funktion? Es wird erstellt, 1.66% reingeschrieben und wieder gelöscht.
Im Übrigen würde ich Nums und size als Parameter an die Funktion übergeben, um Sicherzustellen, dass es solche Variablen überhaupt gibt.
Und dann überleg nochmal, ob eine double-Variable ein Prozentzeichen enthalten kann.
-
sprintf-Fragen gehören nach "ANSI C". In der VCL sieht das zB. so aus:
String Ratio(double N_Arr[]) { double Ausgabe = (StdDev(N_Arr, size)) / (Mean(N_Arr, size))*100; return FloatToStrF(Ausgabe, ffFixed, 7, 2) + "%"; }
PS. Ich wollte mich nochmal herzlich bedanken, dass ich dir mit der math.hpp helfen durfte. Und ja, es ist absolut unüblich, auf Antworten zu zumindest zu reagieren ...
-
**
Und ja, es ist absolut unüblich, auf Antworten zu zumindest zu reagieren ...**Hey Jansen, stotterst du neuerdings?
-
Meine Tastatur ist schlecht entprellt.
-
Uuh, hoffentlich ziehst du dir da keine Prellungen zu.
-
Original erstellt von Jansen:
PS. Ich wollte mich nochmal herzlich bedanken, dass ich dir mit der math.hpp helfen durfte. Und ja, es ist absolut unüblich, auf Antworten zu zumindest zu reagieren ...[/QB]
Oh sorry,
ich wollte mich bedanken, ich habs verpennt... schulgigung....
Übrigens ist dein Tipp von eben genau das was ich gesucht habe, eine andere Lösung für sprintf...
-
[QUOTE]Original erstellt von Eßer:
[QB]Klar kriegst du 4 zurück. Guck mal, was die Hilfe zum Rückgabewert von sprintf sagt!ja , wenn ich mir die Hilfe so richtig ansehe, hätte auch ich alleine drauf kommen können.
Aber danke für die Info.