Ergebnis 1 bis 5 von 5
  1. #1
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.352

    Standard [C/C++] Übungsaufgabe (atof nachbauen)

    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

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  2. #2
    Sobig Wurm Avatar von Leange
    Registriert seit
    06.09.2008
    Beiträge
    227

    Standard AW: [C/C++] Übungsaufgabe (atof nachbauen)

    Hi

    http://pastebin.com/sGmG23CB

    Funktioniert! ^^

    Lässt sich sicherlich schöner lösen, Musterlösung ist down

    MfG Leange

    P.S. <iostream> nur für cin.get()

    Freiheit stirbt mit Sicherheit

  3. #3
    Gesperrt
    Registriert seit
    24.08.2008
    Beiträge
    418

    Standard AW: [C/C++] Übungsaufgabe (atof nachbauen)

    Zitat Zitat von leange Beitrag anzeigen
    <iostream> nur für cin.get()
    Und C++ nur für iostream?

    Mainz: https://gist.github.com/starflow/b63...12585ee5378952

    Da bb sich die Freiheit genommen hat falsche Ergebnisse vorzugeben, hab ich mir die Freiheit genommen es richtig zu machen und den Output anzupassen

    Output:
    Code:
    » make _atof_ && ./_atof_
    cc     _atof_.c   -o _atof_
    | Input       | Output atof  | Output atof_ | Output _atof_
    |  ABCDEFG    |  0.000000    |  0.000000    |  0.000000
    |       -b    |  0.000000    |  0.000000    |  0.000000
    |        -    |  0.000000    |  0.000000    |  0.000000
    |      -3.    | -3.000000    | -3.000000    |  0.000000
    | 3.141.59    |  3.141000    |  3.141000    |  0.000000
    | 3.14159_    |  3.141590    |  3.141590    |  0.000000
    |      -78    | -78.000000   | -78.000000   | -78.000000
    |       78    |  78.000000   |  78.000000   |  78.000000
    | -3.14159    | -3.141590    | -3.141590    | -3.141590
    | 3.141592    |  3.141592    |  3.141592    |  3.141592
    P.S.:
    Ist natürlich nich 100% atof, es fehlt noch:

    * die Verarbeitung vom Exponent, wenn vorhanden.
    * Lokalisierung (Komma als Dezimaltrennzeichen)
    * Verarbeitung von Hexadezimal, Infinity und NAN
    * Irgendwas mit Buffđ→ĸøłŋ€®

  4. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    blackberry (07.05.2016), Leange (05.05.2016)

  5. #4
    Sobig Wurm Avatar von Leange
    Registriert seit
    06.09.2008
    Beiträge
    227

    Standard AW: [C/C++] Übungsaufgabe (atof nachbauen)

    Und C++ nur für iostream?
    C++ nur fürs Visual Studio. Heißt ja Visual C++ und nicht Visual C!

    Aber ehrlich ... ich hab gerade so(!) verstanden was Zeiger sind. Wann, warum und wie man sie benutzt. Und du kommst mit sowas:
    Code:
    char** strs
    Also les ich mir das hier durch. Und jetzt hab ich Kopfschmerzen vielen dank auch. xD

    MfG Leange

    Freiheit stirbt mit Sicherheit

  6. #5
    Gesperrt
    Registriert seit
    24.08.2008
    Beiträge
    418

    Standard AW: [C/C++] Übungsaufgabe (atof nachbauen)

    Zitat Zitat von leange Beitrag anzeigen
    Aber ehrlich ... ich hab gerade so(!) verstanden was Zeiger sind.
    Das hat bei mir auch erst vor kurzem Click gemacht. Dabei sind die Dinger Todessimpel.

    Zitat Zitat von leange Beitrag anzeigen
    Wann, warum und wie man sie benutzt. Und du kommst mit sowas:
    Code:
    char** strs
    Ein Array gefüllt mit char-Arrays, aka C Strings ^^\0
    Da Arrays auch nichts weiter als Pointer sind, also ein Zeiger auf den Anfang einer Liste voller Zeiger.

    Zitat Zitat von leange Beitrag anzeigen
    Also les ich mir das hier durch. Und jetzt hab ich Kopfschmerzen vielen dank auch. xD
    Ich weiß ja nicht ob du Beej's Guide to C kennst, aber mir hat der sehr geholfen, besonders beim Verständnis im Umgang mit Pointern

    So anyway, if we can get on with it and get a drum roll and some forboding music playing for the definition of a pointer, a pointer is the address of some data in memory. Imagine the classical score from 2001: A Space Odessey at this point. Ba bum ba bum ba bum BAAAAH!

  7. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Leange (06.05.2016)

Ähnliche Themen

  1. Perl Übungsaufgabe
    Von NOE_2.0 im Forum Übungsaufgaben
    Antworten: 2
    Letzter Beitrag: 09.08.2010, 11:19
  2. Perl Übungsaufgabe
    Von trisn im Forum Perl
    Antworten: 6
    Letzter Beitrag: 14.04.2010, 21:59
  3. Problem bei Übungsaufgabe
    Von oxmox im Forum Delphi
    Antworten: 4
    Letzter Beitrag: 20.06.2009, 20:40
  4. [C++] Übungsaufgabe
    Von Cr4ckEye im Forum C, C++
    Antworten: 10
    Letzter Beitrag: 05.01.2009, 20:01
  5. [C++] Übungsaufgabe [Verschlüsselung]
    Von Cr4ckEye im Forum C, C++
    Antworten: 4
    Letzter Beitrag: 05.01.2009, 18:59

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
crypt.blue