[Playlisten] [Impressum und Datenschutzerklärung]

13C.3 Zahlenlisten parsen mittels endlichem Automaten, Teil 2


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

alsoes ging um solche Zeichenketteneinzulesenund auszuwertendas ich jetzt wirklichVariablen setzen kann eine Variable auf hundert drei zwanzig Komma vier fünf sechs Sätze einer vier tausend und so weiter setze und noch ein auf zwei Komma noch was sitzeallein auf Basis dieser Zeichenkettedas selbst gemacht ohne irgendwelche weiteren Bibliothekenschon erwähnt ?? typischerweisedas wasreguläre Ausdrückeeingelegt Beistrich als Bibliothekhier Komma sogar mit den üblichenC Funktion sich noch raus rettenkann man sowas hat einfach nur mit Leerzeichen dazwischenaber als Beispielso eine Zeichenkettezerlegenund auswertenamgab's daneben ihr dieseRZ Maschinen diesen endlichen Automatenichfange an in diesem Zustandmamsellder beliebig viele Leerzeichen absorbiert wenn Leerzeichen kommen bleibe ich in diesem Zustand Lda fang ich an das man statt Zustandin irgend eine Ziffer kommt gehe ich in den Zustand V zahlen vor dem Komma sobald weitere Ziffern kommen bleibe ich in diesem ZustandLeerzeichen wieder rausund die erste Zahl ist fertigoder ich Gewinn Punkt aus dem Haus und dann kommen Ziffernnach dem KommaKomma die hiermit dann den Teil der Zahl nach dem Kommageblitzt beliebig viele Ziffer nach dem Kommasobald er Leerzeichen kommtzwar nicht draußen im Zustand L und damit beliebig viele Leerzeichen?? jetzt wieder von vorne losund dazu gab's eben auch diese Tabelle dann wenn ich im Zustand V binund ich kriege eine Ziffergerade nichtund ich kriege eine Ziffer den gleichen Zustand Vwenn ich ein Punkt Kriege glichen den Zustand ähm wenn ich ein Leerzeichen KiwizustandL alles andereist falsch ein Fehler zustatten habe ich doch ganz ein gemaltund daraus ergab sich danndiese Tabelle hiersoalsovier Zuständevor dem Komma nach den Komma Leerzeichen einsammeln und Fehlerin der Tabelle kommen vier Zustände vor wenn ich im Zustand V binund es kommt die erste Möglichkeitdie nur die Möglichkeitan Ereignisdas warecht eineZifferden gleichen Zustand V wenn ein dezimal Punkt com das weiche die Spaltemit der Nummer eins die zweite Spaltezum ab und kommt Gehirnszustanddennnach dem Komma und so weiterdass wir schon so weit fusioniert zu haben was jetzt noch nicht drin ist ist das ich tatsächlich dieseZahlen einsammeln??das wollte ich ?? mit ihm durch exerzieren ist das möglich das ich diese Zahlen wichtig in einer Variablen stehen habealsoich möchte hierüberlegen und die Variable anlegen hier gehe ich die gesamte Zeichenkette durchichsollte hier vielleichteine Variablehabenin der ich meine ganzen Zifferneinsammelnund zum Schluss dann irgend einer bestimmten Stelle in ein nettes Rayspeicherauch dieses Gerät sollte man anlegenDoppelanwaltsresultatenur er mit VRfürResultatsagen welcher die MöglichkeitdreiZahlen insgesamt abzuspeichernund ich hätte natürlich auch merken müssen welche Zahl ich gerade von den dreien habeähmdas machen Nummerund den UN Nummer der aktuellen Zahlin C seine Wissen kurzsichtigin zwei nullsoalso der Job soll jetzt sein diese Zahl einzusammelnsie aufzubaueneinzulesenirgendwie aus diesen Ziffern eine double-Zahl im Zweifelsfallnach getaner Arbeitin dieses Gerät zu speichernan die nächste Stelle in diesem Gerät zu speichern ?? es ist glaube ich das einfachste damit anzufangen sie an die nächste Stelle in diesem zu speichernüberlegen Sie Komma wo das stattfinden mussC die großartigeVerzweigungcompany Zifferimmer zu dennächsten Zustand der nach Netz verkommen muss haben wir dezimal Punkt der nächste Zustand der nach dezimal Punkt com muss und so weiterwo würden sie jetzt einbauendass die eingesammelteZahlabgespeichertwirddas Norman Cookalsoder Gedanke ist sobald ein Leerzeichenkommt und zwar das erste Leerzeichenkommthier muss ich irgendwie meine Ziffern zusammen sammelneins zwölf hundert dreiundzwanzighundert und zwanzig Komma vier und so weiter dem sicher zusammen sammeltund irgendwann kommt das erste Leerzeichenund in dem Momentsollte die Zahl abspeichernmüssen vorsichtig sein sie sind muss auch mal meine Zahl abspeichernohne dass ein Leerzeichenda kommt also es gibt noch die Situationganz am Endemuss ich auch ohne das Leerzeichen abspeichernandaswas ich mir vorstellenkönnte als einfachste Lösung ist das man hier guckt okay habe ich ein Leerzeichenundhabe ich eine Zahl eingesammeltKomma dazu schreibe ich Bruchhausen nochStandardpoolCPunktPoolPunkt aberich baue also noch eine Variablein der ich mir merkeich bereits eine Zahleingesammelthabemit gleich klardaszu verstehen ist ?? ganz zu Beginn habe ich natürlich noch keine Zahl eingesammeltdannso wenn ich ein Leerzeichen habe und eine Zahl eingesammelt habeund eine Zahl eingesammelt habe ?? noch mein Lüfter drindannwerde ich mir diese eingesammelte Zahl die Weine Variablen Amerken und in dem beräter abspeichernsowasund dann sagen okay wir haben jetzt ein mehr eingesammeltähm Weiher der Zähler sollte der Zähler werdenfür diese Zahlen habe ich ein gesamter Mann drittens nulldie erste eingesammelt ist die Zahlschreibe ich die Zahl in die Stelle null vom FA Mac mit einer so geht's weiterund nachdem ich die Zahl eingesammelt habesoll ich noch was machen was mache ich jetzt damit beim nächsten Leerzeichen bin mir miteinander kommt eine passierenwas soll ich machen wenn mehrere Leerzeichen hintereinander kommenunter anderem oder andere Sachen passiert was sollte ich machen damit ich nicht dieselbe Zahl noch mal ein Sammlergenauich merke mir jetzt einfach okay dann habe die eingesammelt und wenn er noch mal jetzt das Leerzeichen findetdann Mitte Jänner nicht mehr reinalso wenn ich ein Leerzeichen Treffenunddieserdieses Fleck dieser Anzeiger hier sagt oder bezahl eingesammelt und ihr noch keine abgeholtdamit ich mir die Zahlund merke mir danach natürlich auch jetzt ist die Zahl eingesammeltsowie eine neue bauenGesetz muss soforteine Geschichte ich jetzt natürlich noch sie sehen es wird ständiger fortgesetztund es wird ständig aber nur auf Ortsgesetz sei ein Gesamtbedarffortgesetzt wird hier auch fortgesetztwo sie sich den auftrugdamit es überhaupt mal wahr wirdgenau dem allerersten if sobald du Ziffer habe sobald ich dann wieder die erste Ziffer habeich muss mindestens eine Ziffer haben sonsthabe ich keine Zahlensobald ich die erste Ziffer findewird sich das wieder auf Truman ich dann noch ?? Ziffer finde es egal ?? bleibst duirgendeine Ziffergefunden okay dann weiß ich ich dann anscheinend schon ähnliche Zahlen äußernich setze das auf Drew bin ich noch ?? Ziffer findet sich noch mal auf Thrun ändert ja nichtsund sobald ich dann zuerst mal ein Leerzeichen sehrdas tunund die Speichermedien zeitig eingesammelt habe und merke mir der Kids eingesammeltdasistnoch nicht alleswas das einsammeln angeht ?? Sinndes einsamen selbst ?? immer noch gar nicht ich ich speichere die Zahl nur abdas auch gar nicht alles was das abspeichernangeht was fehlt jetzt noch was das abspeichern dieser Zahl angehtja sie zwei Komma sechs sieben ?? ich mich mit Walter steht kann Leerzeichen dahinterdie will ich auf diese Weise nicht kriegenwill ich mich darauswas ergänze ich jetzt nochinteressanteIdee sie gucken ob sie am Ende der Zeichenkette angekommen sindins dem Ende der Zeichenkette angekommen und haben noch keine Zahl eingesammeltam das heißt die Bremen noch in Els istich würde sogardieses ganze if hinter die Schleife legenseit etwas unübersichtlichwird es erst einmal mit den Einwirkungenhatdenselben Effekt wie das was sie gerade vorgeschlagen haben ich hab die Schleife hier die die Zeichenkette durchgeht Zeichen für Zeichen durch die Zeichenkette durchbis wir bei dem Zeichen mit der Nummer null ankommen dem Ende der Zeichenketteund dann gehen wir aus dem VorausEnde der Zeichenkettesind gucke ich ob dieses Fleckdiese dieser Hinweis hierdieses Fleck war ist wie Designer nicht abgespeichert ?? ich hab sie eingesammeltaber ich hab die noch nicht abgespeichertund müssen und abgespeichert homogener Speicher ist gerade ab diese Zeit ?? jetzt eigentlich überflüssig Komma sich weiter auswerten aber das ist dann trotzdem stets denselben Effekthat er sicher noch gucken ob sie das Zeichen mit der Nummer null ?? haben die an das Ende von der ZeichenketteFrau okaydas ist das abspeicherndas ist der einfachere Teil?? Komma zusammengefasstalso ich merke mir in dieser Branchenvariableob eine Zahl bereitstehtob ich Ziffern eingesammelt habe ob eine Zahl bereits ?? Klammer zu natürlich nichtsobald ich die erste Ziffer eingesammelt habe das fehlt natürlich noch das einsammeln aber sobald es eingesammelt haben merklich mehr okay Beistrich was bereitValerie Ziffer kommt stets immer noch breiter machte sich das mehrfache machenund wenn dann ein Leerzeichen kommt und ich habe eine Ziffer die bereitstehtspeichere ich sie ab und merke mir es ist keine zu verbreitenBeistrich zahl eingesammeltumbenennen soll es ?? dazu Komma machenganz zum Schlussdann Leerzeichen gekommen ist und ich die Zifferabgespeichert habe dannselber noch malaber mir wird gerade klarZahl eingesammelt ist kein schöner Name sollte den Umbenennenin anderen Systemengibt's dafür etwas hübschere Funktion zum umbenennenwas sie wirklich mal so zu Fußzahleingesammelt nenn ich mal Zahlsteht bereit??aber dasist besser zu verstehensowar gerade ein Mackeine syntaktischenProbleme habeokaynur eine Variante ich benutze jetztnichts besonderes das sollte innerhalbund jetzt überlegen sich mal wie man die Stellen vor dem Komma einsammelnkannalso es kommt eine Zifferund ich bin im ZustandZustand Zustand V vor dem Kommadas muss irgendwie jeweils passierenes kommt eine Ziffer ?? Zustand V wurde Kommamanchmalgerade aufeskommt die Ziffer einsschönen habe ich die Zahl zweiund als nächstes die Ziffer zwei der muss sich die einst die ich vorher hatte zur zwölf machenund dann kommt die Ziffer drei der Musik die zwölfte ich bisher hatte zu hundert dreiundzwanzigmachendas heißt sie nehmen die Ziffer die aktuell kommtund platzieren die auf der einer Stelledie bisherigeeiner Stelle wird zur Zehnerstelleoder die bisherige Zehnerstelle wird zur Hunderter Stelleund die bisherige einer zur Zehnerstelleund die neue Ziffer die dazu kommt die hängen sie hintendrandas heißtwas sie bisher hatten mal zehnplus die neue Ziffer sozusagenversuchen Sie das mal zu formulieren das Wasser bis ?? hatten mal zehn tausend neun Ziffer das passiert vor dem Kommaso?? Ziffern vor dem Komma man habe ich Ziffern vor dem Kommaähnlichen Zustand V bin und kriege eine Ziffer bin ich vor dem Komma nicht nach den Komma okay im Zustand V Krieg eine Zifferdas Ziffer vor dem KommaWochen Zustand Lmit dem Zustand L bin und kriege eine Ziffer auch dann bin ich vor dem Kommadie aller erste Ziffer ganz vorneund die Ziffer immer nach der?? ?? Leerzeichenals ich gucken habe ich eine Zifferund bin ich im Zustand L oder bin ich im Zustand V in dem Fallweiß ich es ist ein Ziffer vor dem Kommahabe ich eine Ziffer ist hier erledigtundich guckejetztist er ZustandL oder ist der Zustand Vder FormZ ist ja die Variable in der der aktuelle Zustand steht Start im Zustand Lupdate dann ja immeralles der Zustand L oder ist der Zustand V jetzt weiß ich ich habe eine Ziffer Folie Komma vertreibt es wirklich mal hintenhabenzuwollenKommaoder dem dezimal Punkt er diesem Fallwas ich dann machen will istzurück zum Plan hier was ich dann machen will istdass sich die bisher eingesammeltenZahlen mal zehn nehme und die neue Zahl dazu addierewenn ich zwölf eingesammelt habedie mal zehn ähm sind hundert zwanzigund die neue Zahl drei dazu addierenich gucke mir nicht die alten Stellenin dem Ray das habe ich jetzt gesehen ich gucke mir nicht ?? Stellen an ich gucke mir die Zahl an dich bereits eingesammelt habeich gucke mir aus dem Gerät immer nur die aktuelle Stelle an Komma diealso ich sage die neu eingesammelten Zahlen zweier??in neue eingesammelteZahlistdie alte eingesammelteZahl mal zehndas ganze rüber zu schieben Komma bei zehn Komma null bewertet Komma Zahlen habenplusjetzt wo sich die neue Ziffer der Rheinbaunetzkönnen sie aber nicht schreiben direkt es von ihmdaswäre falsch warum wäre das falschmir ein S von I steht die Nummer des Symbol sich wunderbar die Zeichentabellekann schadenso die Zeichentabelledaswas in SVG stehtist die Nummer dieses Symbolshexadezimaldrei null steht da drin der steht nicht null drin in der Variable es von ihm steht hexadezimaldrei null trennt die Nummer des Symbols nullund der Register natürlich okay dann ziehen wir das einfach ab die Nummer des Symbols nutze ich einfach abdie Nummer des Symbols eins ist ein zweiter die Nummer des Symbols weist zwei weiterso sammel ich jetztzumindest die Stellen vor dem Komma einhundert Prozent korrekt ist mir eben aufgefallen Wirkungsgrademal an was passiertFehler findet selber das spannendstedas Knochen kleiner Fehler drin also sind es sollten die Zahl vor dem Komma eingesammelt werden jetzt werden sie aber noch nichtdie erste bestimmendeRest wird nur nicht im Winter richtig seheKomma ?? gerade anichsetze malden Cursor hier hin und sage Ausführung des Cursorso es achter drei eingesammeltund müssen weitermachendas sind die Zahlen dereinst gesammelt zu haben glaubthundert dreiundzwanziggestellt wurde Komma hat funktioniertund sie sehen vier tausend zwei hundertein tausend das ist jetzt irgendwie vom Murks die zweites vom Ochsen die dritte ist vom Murks die erste ?? funktioniertund die beiden nächsten?? haben nicht funktioniert?? es gibt einen schonenden Fingerzeigwas da wohl schiefgelaufenist warum ist erst richtig und warum sind die nächsten beiden im Eimergenau das ist es Avid nicht zurückgesetzt ich sammle weiter eins eins zwei drei dieser Mitarbeiter die Ziffern ein noch kommen tausend zwei hundertdreißig plus die Ziffer der Kombis des A niemals zurückwo setzen Sie A zurückauf Null setzen wenn ich die nächste Zahl anfange zu sammeln finde ich unsicher wollte sieam Basiswissen unter Wand sammel ich jetzt ein die nächste Zahl einig bis jetzt hier guckenich krieche Ziffer und ich bin im Zustand L dann fang ich an die nächste Zahl einzusammelndann könnte man das machen ?? ich Wirts da hinschreiben wo ich fertig bin eine Zahl einzusammeln wenn ich hier binich Sie an Leerzeichenund es steht eine Zahl bereitsan dieser Stelle will ich das machen nicht speichere das aber sich habe mein Gerätund da würde ich sagen ich glaube es ist die sicherste Lösungdes mehr Muster wieder null bei Kapsel geradegesichertund fürs nächste Mal möcht ich dann mit null Staaten an der Stelle ist amsicherstendefensive Programmierung?? ich habe Programme so das siehäufig robust sinddass man sie schlecht kaputtmachen kann schwieriger kaputtmachen kannals Inhaber nun alle habenob nicht die erste stimmten alle Stimmen immer mit dem Cursor hier aufgetanund sagesage Ausführen des Cursorso Spannung?? drei zwanzig sei nur die Ziffern vor dem Komma bisher vier tausend zwei hundert vierunddreißigmal zehn hoch dreiund zwei vor dem Komma so wird dem gestellt wurde Kommaund jetzt fehlen noch die Stellen hinter dem Komma sie sind das Musterland scheint hier auch kommen ich sammle Ziffern ein See eine Zifferdas muss auch im Verkehrsaufkommenwirklich Stellen hinter dem Kommastellen nach dem Kommaich habe bereits eins zwei drei eingesammeltund jetzt kommt die vier und ich möchte ausmachen ein zwei dreiKomma oder Punkt vier und dann kommt die fünf in ich möchte das machen ein zwei drei vierfünfwie kann man das hinkriegenwas wir jetzt dafür ?? Strategiedie Stellen vor dem Komma die man relativ einfach ich nehme das was ich habe mal zehnund die neue Zeile ich kriege plötzlich hintendranKomma dass nach dem Kommaja also die Idee ist eine Hilfsvariablezu haben?? gablehier gleich null Komma eins istund hier gleich null Komma null eins ist und dann gleich null Komma null null eins ist also der Hilfsvariabledie immer weiter durch zehn geteilt wird für jede Ziffer nach dem Komma für jede Stelle nach dem Komma mit ?? Hilfsvariable immer weiter durch zehn geteiltund was ich addiere ist diese Hilfsvariablemal den Wert der aktuellen Ziffer vier mal die null Komma eins addiere ich hier addiere ich fünf mal null Komma null einsund so weiterdann müsste sie Nauendas äußere HilfsvariableAhnung Kgleichnull Komma eins null Punkt eins aber sind sie schon gewahrt man muss aufpassen dass man das dann auch wiederimmer wieder auf null Punkt einsetzt und nicht danach ?? du Komma null null null null null null eins bei der Arbeitdurch zehnter durch zehn teiltfür die nächste zahme sieht es wieder ?? Komma einsetzen Doppelpunkt einsetzenwenn ich einenZiffer habe und ich bin in Zustandes wird sich der jetzt hinter Il Stephund ich bin im Zustandnach dem Kommawennman dem Diagramm nachgucken ob das auchim Sinne des Erfinders istichbin den Zustand ähm genau wenn der dezimal Punkt kommt bin ich auf jeden Fall in den Zustand ähmund da sammle ich meine Nachkommastellenein nasses auf die richtige Stelle ich habe einen Zifferich bin in Zustand denn das ist was mich interessierthier muss ich arbeitenso und was ich jetzt mache ist ich nehme das was ich bisher hatteSchloss?? jetzt genau der Schlachtplanhier der war nämlichich nehme meine Hilfsvariablemal den Wert der aktuell eingesammelten Ziffer zu meiner bisherigen Zahl dazugenau das räumlichenVariablemal den Wert der aktuell eingesammelten Ziffer des MBO mir schon genug trickstdas letzte Zahl von null bis neundie nämlich dazuPunktund für die nächste StelleSchäubles K durch gleichzeitig sieht komisch aus ich schreibe kam mal gleichnull Punkt eins und für die nächste Stelle muss ich ebendiese Wertigkeit hier um Faktor zehnverringertdaseinzige was mir jetzt noch fehlt istdas dieses Car irgendwann wieder auf null Punkt eins gesetzt werden musswo setzen Sie das K auf null Punkt eins am Anfang sowiesologischerweiseaber ich muss es ja nach der ersten Zahlund vor der zweiten Zahl irgendwie wieder auf null Komma einsetzenwo machen Sie das das kaufen Komma einsetzengenau das wäre das aller einfachste Ganze sehr strukturiert hier sehr gut strukturiertdarüber an auf null setzen sein okay wir bereiten für die nächste Zahl vorund setzen auch noch K auf null Punkt einsbis Misses tatsächlich fertig sein ich bin gespanntwarund hier Ausführung des Cursormal sehen was er so hateins zwei drei vier fünf sechs mal zehn hoch zweialso mal wundert mich ist es Kommaden ?? Punkt zwei Stellen nach rechts ein zwei drei Punkt vier fünf sechs okay der Ersatz funktioniertder nächstezehn hoch drei mal drei stellen das Komma worauf vier zwei drei vier Punkt fünf vier zwei drei vier Punkt fünf und der letzte hier zwei Komma sechs sechs neun soweit ihr sind den Rundungsfehler zuschlagenzwei Komma sechs siebensechs ??das sieht gut aus das muss man sich jetzt doch mit tausend verschiedene Sachen testenLeerzeichen vorne Leerzeichen hintenwürde mich wundern wenn er nicht noch ein Fehler drin istKomma sehen es ist machbar sie können tatsächlich zu Fuß wenn Sie wolleninsiebzig Zeilenhinkriegeneine Folge vonZeichenzu interpretierenals eine Folge vonGleitkomma zahlenPunkt es ist nicht Raketentechniklässt es sich machen und alles nach Schema Fmit diesen endlichen Automaten