Ich möchte ein Zahl zb "12345678" so weiterverarbeiten: 12*1 34*2 56*3 78*4 Wie kriege ich die einzelnen Stellen herausgelöst ohne die Fragmente zu zerstören? Im Sinne von dass 12 zwölf ist und 34 vierundreissig und nicht eine 1 eine 2 eine 3 und eine 4?
Welche Sprache? Wie liegt die Zahl vor, Datentyp? Länge? Datentyp der Ergebnisse? Feste aufteilung? code?
Sprache: C Datentyp: im Moment kann ich die Zahl als string oder als float verarbeiten Das Ergebniss wird weiter"verrechnet" float wär also nicht schlecht. Ich habe noch garkeinen Code weil ich nicht weiss wie ich es angehen soll. Ganz konkret ist meine derzeitige position 22 grad und 35.9462 minuten Süd Das hab ich als string wie auch als float vorliegen jetzt möchte ich das delta lambda zu einer anderen breite ermitteln z.b. 21 grad und 30.0000 minuten daher lautet der rechenweg: delta lambda=(grad_start mal 3600+minuten_sstart mal 60) - (grad_ziel mal 3600+minuten_ziel mal 60) Also muss ich dafür die grade von den minuten trennen
Ups! Das string wie der float sehen so aus:"2235.9462"
Ja ich könnte die Zahlen einzeln aus dem String "extrahieren" und dann alles einzeln wieder zusammenfügen.Ich empfinde das aber nicht als "elegant" und wahrscheinlich gibt es eine bessere Lösung.
Attila schrieb: > a ich könnte die Zahlen einzeln aus dem String "extrahieren" und dann > alles einzeln wieder zusammenfügen. So würde ich das machen. Das ist weniger Aufwand, als erst eine Zahl daraus zu machen und diese dann zu zerlegen (was man mit jeweils einer normalen und einer modulo-Division macht. Beispiel: 1234 mod 1000 = 234, 234/10 = 23).
Alles was ich aus meinen C Büchern erlesen und auch ansonsten ergooglen kann mache ich ja selber. Es gibt aber Dinge die jemand der seit 3 Wochen C macht einfach übersieht: Das sind die Dinge die ich hier im Forum frage. Ich verstehe Einlassung nicht lieber Tom. Ist dieses Forum nur für Profis?
Es geht nicht darum, etwas zu ergooglen oder im Buch zu lesen. Hier ist einfach mal "machen" angesagt. Du hast das Handwerkszeug, du hast die Aufgabe schon in ihre Bestandteile zerpflückt, jetzt muss es nur noch gemacht werden. Es ist keinem geholfen, wenn dir jemand eine Lösung hinschreibt. Ist so.
Für c gibt es einige Funktionen in Libaries. Für deine Konvertierung von Zeichenkette -> Zahl kannst du in der STDLIB.h nachschauen. Für Strings gibt es die STRING.h Diese Zusatzfunktionen mit #INCLUDE einbinden. Infos auch hier, Anhang B http://openbook.galileocomputing.de/c_von_a_bis_z/index.htm avr
@Tom: Ich will gar keine Lösung vorgekaut bekommen! Ich habe ja auch die (meine) Lösung oben schon gepostet! Ich habe nur gefragt wie eine eleganterer Lösungsweg (!!!) aussehen könnte! Wenn es denn überhaupt eine gibt. Und eine solche Frage stellt der Anfänger den Profis was ich hier in diesem Forum gemacht habe. Die Tatsache dass ich hier 2235.9461S auf einem LCDisplay stehen hab hätte ich auch für 3,50 Euro mit einem TomTom im Fachhandel kaufen können. Soviel zur fertigen Lösung. @Uwe: Vielen Dank! Auf Modulo wäre ich nicht gekommen. Ich glaube (ist aber noch nicht ganz gereift) der Mix könnte es sein: Die 2 ersten Stellen einzeln auswerten dann per modulo "löschen" und den rest (immerhin 6 stellen die dann ich nicht wieder zusammensetzen muss) als float weiterverarbeiten.
@avr: Vielen Dank ich schaue natürlich in die Libraries, schreibe die Sachen aber gerne dann letztlich selber. Es soll ja auch Spass machen :-) Konvertiert sind die Zahlen ja bereits von ASCII nach float und auch wieder zurück. Für das einbinden von string.h habe ich bis jetzt keinen Grund gesehen weil bis jetzt stdlib.h völlig ausgereicht hat.
Attila schrieb: > Die 2 ersten > > Stellen einzeln auswerten dann per modulo "löschen" Wenn du aus dem Sting die Stellen ausgewertet/gesichert hast kannst du die auch mit '0' überschreiben. Bei den üblichen Ümwandlungen stören führende Nullen nicht. avr
@avr: Spannend! Da die Zahl ja als float und als string vorliegt ergeben sich einige Möglichkeiten. Ich werde es posten sobald ich ein Lösung habe. Ich bin gespannt!
Hier meine Lösung: rein ist eine Koordinate als char. Zur Erläuterung steht hinter jeder Zeile was aus der Koordinate geworden ist. Als Beispielkoordinate: rein="2235.9412" grad=atoi(rein); // 2235 grad=grad/100; // 22 grad=grad*3600; // 79200 min=atof(rein); // 2235.9412 min=fmod(min,1100); // 35.9412 min=min*60; // 2156.472 sekunden=grad+min; // 81356.472 Vielen Dank Uwe, ohne deine Anregung mit dem Modulo wär ich nicht auf diese Lösung gekommen. Allerdings geht Modulo bei floats nicht dafür aber fmod(a,b) die in der math.h library ist.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.