Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » STRINGTOINT/STRINGTODOUBLE HILFEE!!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.01.2006, 13:41 Uhr
rejo




C++:
#include <sstream>
...
std::istringstream isst;
isst.str(str);
isst >> wert;
...


Bin mir nicht sicher was du meinst aber...
Vielleicht hilft dir das weiter

Dieser Post wurde am 06.01.2006 um 13:42 Uhr von rejo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.01.2006, 13:49 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ich vermute mal für die 1 ist sowas gemeint
ungetestet

C++:
bool stringToInt (char* str, int* wert){
    for(*wert=0;*str;++str)
        if(isdigit(*str)) *wert=(*wert*10) + *str-'0';
        else return false
    return true;
}


der zweite fall ist dann ziemlich analog (check auf - und + fehlt bei der ersten aufgabe bei mir ja auch noch...) du musst halt auf mehr checken als nur auf isdigt
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 06.01.2006 um 13:52 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: