Autor Beitrag
MelBel
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 06.12.13 13:14 
Hey Leute!
Ich habe nach einer Hilfe für meine Aufgabe gesucht und hab euch gefunden! :)
Ich hoffe ihr könnt mir weiterhelfen.

Meine Aufgabe lautet:

Schreiben Sie eine Funktion, die einen String ("ASCII-Werte") in einen double-Wert umwandelt. Aus historischen Gründen heißt diese Funktion atof, also ASCII nach float, obwohl das Ergebnis eine double ist.
Schreiben Sie atof so, dass auch Werte der Form 123.45e-6 akzeptiert werden, bei denen einem Gleitkomma Wert optional der Buchstabe e oder E und ein Exponent, wieder optional mit Vorzeichen, folgen kann.

Jetzt bin ich aber echt auf dem Schlauch, denn der Prof hat uns die Aufgabe einfach hingeknallt ohne zu erklären wie man den float-Befehl überhaupt benutzt.
Ich "glaube" ich hätte da einen Ansatz
ausblenden C#-Quelltext
1:
2:
string bla = "123.32";
float fnum = float.Parse(bla);

Davor würde ich dann "bla" definieren, bzw zu einer Eingabe auffordern.

Ich hoffe ihr könnt mir weiterhelfen! :)

LG MelBel

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Fr 06.12.13 13:20 
Dein "Ansatz" ist zwar grundsätzlich richtig, ich bezweifele aber dass das als Antwort durchgeht. Vermutlich möchte der Prof dass du die Parse-Funktion selbst schreibst.

Was meinst du eigentlich mit dem " float Befehl"? Es gibt einen Typen namens float, dieser hat zahlreiche Methoden. Aber einen "float-Befehl" gibt es so gesehen eigentlich nicht :wink:
MelBel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 06.12.13 13:40 
Gut das mit dem float-Befehl war mein Fehler, dachte es wäre irgendsowas in der Richtung ;)


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
using System;

class Program
{
    static void Main()
    {
  
  string bla = "132.32";
  float fnum = float.Parse(bla);
  Console.WriteLine(bla);



Also soweit bin ich gekommen, wobei ich die Zahl in dem Beispiel "132.32" variieren kann und selbst eingegeben wird.
Wie meinst du das mit Parse-Funktion selbst schreiben?

Wie könnte ich "atof" so schreiben, dass auch der Exponent mit einem E folgt?


LG MelBel

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 06.12.13 13:46 
Du sollst vermutlich das tun was die Parse Methode macht ohne Parse zu verwenden.
Übrigens heißt die Aufgabe einen double zu erstellen und eben nicht float.


Fragen mit denen du den Aufgabensteller nerven solltest um rauszufinden was du wirklich tun sollst

1.) Aus welchem Kulturkreis kommt der Eingabestring oder soll das einstellbar sein bzw. die Systemeinstellungen verwenden (die Parse Funktion berücksichtig die Kultur und in deutsch ist ein Punkt nunmal ein Tausendertrennzeichen)
2.) Wie soll die Funktion auf nicht parsbare strings reagieren (Exceptions, Rückgabewert, bestimmter Zahlenwert der Fehler signalisiert (z.B. infinity) etc.)
3.) Bis zu welchem Grad dürfen vorhandene oder erhältliche Bibliotheken verwendet werden (wie zum Beispiel die Parse Methode oder andere Klassen wie zum Beispiel Convert oder Klassen aus dem Math Namespace).

und eine irrelevante Nerd Bonusrückfragen

4.) Woher soll der ASCII string kommen? In .Net ist alles Unicode das kennt ASCII nicht mal mehr.
MelBel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 06.12.13 14:04 
Hey Ralf,
also ich hab gerade andere Kommilitonen (die wissen auch nicht wie die Aufgabe geht):

1) Also es wird der "deutsche Kulturkreis" berücksichtig. Punkte = Tausendertrennzeiche

2) Da denk ich, denkst du zu kompliziert, auf die parsbare strings soll ein Fehler kommen und die Eingabe wiederholt werden.

3) Die Bibliotheken dürfen dahingehen benutzt werden, die wir bis zu dem Zeitpunkt gelernt haben, dürfen aber auch theoretisch alle verwendet werden

4) Kein Ahnung :D

LG MelBel
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 06.12.13 14:11 
zu 1.) Dann solltest du eine Überladung der Parse (oder TryParse) Methode verwenden die einen IFormatProvider annimmt um zu sagen das du deutsch(de-de) möchtest.

zu 2.) Das denke ich nicht ;) Du solltest eine Methode atof schreiben laut Aufgabenstellung geht da ein string rein und ein double kommt raus. Du mußt dir also Überlegen wie du dem Nutzer der Funktion zurückmeldest ob der Double auch gültig ist. Die angesprochene TryParse Methode die du anstatt Parse verwenden kannst ist da ein schönes Beispiel wie das aussehen kann.
MelBel Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 09.12.13 20:32 
Aaaaaaalso

Ich bin zum Prof gegangen und hab ihn mal gefragt.
Bevor ich ihn überhaupt die Frage stellen konnte, sagte er sofort, dass er die falsche Aufgabe uns gegeben hätte, weil er die Semester verwechselt hat. War anscheinend für das Semester über uns.
Daher war alles "umsonst" :D

Aber ich danke euch trotzdem Allen! :)