000
05.01.2006, 23:57 Uhr
jerico
|
Hallo Ich bin neu hier und beschäftige mich auch seit kurzem mit C++.Ich finde es toll zu programmieren. Aber habe eine Aufgabe bekommen, wo ich einfach nicht weiss wo anfangen.Könntet Ihr mir helfen bitte...So sieht die Aufgabenstellung aus. Bei mir hat es einfach noch nicht klick gemacht.Hilfee!!!
Aufgabenstellung: Aufgabe 1 Schreiben Sie eine Funktion, die einen String in einen echten int-Wert umwandeln kann. Die Funktion muss also den String Zeichen für Zeichen untersuchen und aus den gefundenen Ziffern „irgendwie“ den numerischen Wert erstellen. Wenn die Funktion ihre Arbeit nicht korrekt beenden kann, weil z.B. ein ungültiges Zeichen gefunden wird, soll sie ihre Arbeit abbrechen und einen Fehler zurück melden. Der Prototyp der Funktion soll so aussehen: bool stringToInt (char* str, int* wert); Hierbei ist str ein Zeiger auf den String, der umgewandelt werden soll, wert ist ein Zeiger auf eine int-Variable, in die der gefundene Wert gelegt werden soll. Wenn ein Fehler auftritt, gibt die Funktion als Rückgabewert false zurück. In diesem Fall darf der Wert, worauf der Zeiger wert zeigt, nicht verändert werden. Wenn alles geklappt hat, gibt die Funktion true zurück. Gültige Zeichen für einen int-Wert sind die Zifferzeichen 0 – 9 und eventuell an erster Stelle ein Minuszeichen. Beachten Sie zudem, dass ein String nicht beliebig lang sein darf, int-Werte können nicht beliebig gross werden. Aufgabe 2 Schreiben Sie nun eine zweite ähnliche Funktion, die aber einen String in einen double-Wert umwandelt. Hier gilt zusätzlich, dass zwischen den Ziffern genau ein Punkt (der Dezimalpunkt) stehen kann. Leider gibt es Benutzer, die manchmal auch ein Komma verwenden. Ihre Funktion soll auch das Komma als Dezimalpunkt akzeptieren. Beachten Sie zudem, dass auch Zahlen ganz ohne Dezimalpunkt eingegeben werden dürfen. Solche Zahlen müssen ebenfalls korrekt umgewandelt werden. Der Prototyp der Funktion soll analog wie bei Aufgabe 1 gestaltet werden: bool stringToDouble (char* str, double* wert); Hier einige Beispiele von gültigen Eingaben, die Ihre Funktion korrekt verarbeiten muss: „123.456“ ergibt 123.456 „123,456“ ergibt 123.456 (Komma statt Dezimalpunkt) „123“ ergibt 123.0 keine Dezimalstelle „123.“ ergibt 123.0 Dezimalpunkt ohne weitere Kommastellen „-0.123“ ergibt -0.123 negative Zahl „.123“ ergibt 0.123 Start direkt mit Dezimalpunkt Zusätzliche Aufgabe für Perfektionisten Ihre Funktionen sollten sich nicht durch Leerschläge am Anfang oder Ende der Strings stören lassen. Ebenfalls sollten führende Nullen oder Nullen am Ende bei Kommastellen korrekt ignoriert werden. Der Benutzer soll also auch etwa folgenden Wert eingeben dürfen: „ - 0003.987400000 “ ergibt -3.9874 |