Worum geht es? Es soll eine "atof"-ähnliche Funktion entstehen (eine Funktion zur Umwandlung eines C-Strings in einen (signed) double)
Was soll damit erreicht werden? Ein besseres Verständnis von C-Strings und deren Bearbeitung, ohne spezielle Hilfsmittel (zB. Funktionen aus der Standardbibliothek).
Ich gebe folgenden Code vor:
Code:
#include <stdio.h>
double _atof_(const char *);
int main(void)
{
printf("%lf\n", _atof_("3.141592"));
printf("%lf\n", _atof_("-3.14159"));
printf("%lf\n", _atof_("78"));
printf("%lf\n", _atof_("-78"));
printf("%lf\n", _atof_("3.14159_"));
printf("%lf\n", _atof_("3.141.59"));
printf("%lf\n", _atof_("-3."));
printf("%lf\n", _atof_("-"));
printf("%lf\n", _atof_("-b"));
printf("%lf\n", _atof_("ABCDEFG"));
return 0;
}
#include <stdio.h> steht dort lediglich für printf. Es sollen, wie bereits gesagt, keine Funktionen aus der Laufzeitbibliothek verwendet werden.
Alle zugelassenen Hilfsmittel sind somit auf Variablen, Schleifen, If-Abfragen, Mehrfachauswahlen (switch), usw. beschränkt.
Die Funktion soll dem oben ausgeführten Funktionsprototyp entsprechen;
Name: _atof_ (die Unterstriche sind lediglich dafür da, eine Namenskollision zu vermeiden)
Rückgabetyp: (signed) double
Parameter: Zeiger auf einen const char (const char *)
Das Programm soll folgenden Text ausgeben:
Code:
3.141592
-3.141590
78.000000
-78.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Falls eine Zahl aufgrund ihrer Beschaffenheit nicht in einen double passt, muss kein [+|-] HUGE_VAL zurückgegeben werden (siehe: http://www.cplusplus.com/reference/c...dlib/atof.html )
Musterlösung: http://nopaste.free-hack.com/index.php?id=e5968ed60c
Viel Spaß + Erfolg.
mfG. BlackBerry