Endlicher Automat - Seite 3

Seite 3 von 4 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/endlicher-automat_244514/page_3 - zur Vollversion wechseln!


SeVen schrieb am 08.11.2015 um 19:12

Das Problem ist, dass mir die Theorie eigentlich klar ist. Leider weiß ich überhaupt nicht wie ich das in ein Programm umsetzten soll. Die Zustandstabelle habe ich noch hinbekommen.
Im ersten Durchlauf der for-Schleife wird das erste Zeichen überprüft. Entweder ist es ein Vorzeichen, ein Komma oder eine Zahl. Nun wird dadurch die Variable Eingabe benannt, jenachdem welches Zeichen eingelesen wurde. Bis dahin verstehe ich das Programm. Nun muss ich doch irgendwie den Zustand speichern bevor ich das nächste Zeichen untersuche. Dann wird das 2te Zeichen Untersucht und der Zustand muss angepasst werden usw. Wenn am Ende ein Endzustand herauskommt ist es eine Kommazahl, wenn nicht eben keine.
Leider kann ich das nicht in ein Programm umsetzten. Habe mich jetzt 3 ganze Tage mit diesem Programm beschäftigt und bin der Lösung nicht wirklich nahe gekommen, echt frustrierend =(


Denne schrieb am 08.11.2015 um 19:17

Wann ist die Abgabe?


SeVen schrieb am 08.11.2015 um 19:20

Leider Morgen...
Könnt ihr mir vielleicht einen Tipp geben wie ich Java besser verstehen kann oder wie ich es am besten erlerne? Irgendwie mache ich den ganzen Tag nichts anderes, aber es wird nicht besser...


Denne schrieb am 08.11.2015 um 19:28

Muss leider in 3 min weg und bin heute Abend nicht mehr am PC. Morgen früh bin ich wieder online und kann dir helfen, wenn es ausreicht von der Zeit. Bis wie viel Uhr musst du es denn abgeben?

@ Java: Üben,Üben, Üben. So habe ich es damals gelernt. Die Aufgaben in der Uni immer brav gemacht. Es ging mir ähnlich wie dir zu Beginn, dass ich Stunden/Tage dran saß, aber irgenwann wirds besser. Ich bin der Meinung, dass es nichts bringt, sich einfach die Lösungen geben zu lassen (bitte nicht falsch verstehen, ich werfe es dir hier nicht vor, kenne nur einige andere, die so durch Studium gekommen sind und nach dem Bachelor absolut nicht programmieren konnten). Es ist leider wirklich zeitintensiv und erst mit der Zeit wirds einfacher, wenn man es mal verstanden hat.


SeVen schrieb am 08.11.2015 um 19:37

Leider hilft es dann nicht mehr, aber trotzdem vielen Dank! Echt nett das hier so schnell geholfen wird!
Ich muss mogen um 8 Uhr los...
Hast du trotzdem einen Tipp inwiefern ich üben kann. Vielleicht mache ich ja beim Lernen schon was falsch. Gibt es eine Seite oder ein Buch oder ein Programm welches mir das lernen erleichtern kann. Oder Übungen mit Erklährung warum was wie gemacht wird?


Denne schrieb am 08.11.2015 um 19:49

Im ersten Semester waren bei uns vom Stoff her alle nötigen Informationen in den Folien der Vorlesung. Gerade am Anfang geht es nur ums Verständnis und die Denkweise.

Ich habe nie irgendwelche Seiten oder zusätzliche Literatur verwendet, kann dir daher nix empfehlen.

Wenn du möchtest, kann ich dir meine Uni-Unterlagen zukommen lassen, vllt hilft es dir etwas.


SeVen schrieb am 08.11.2015 um 20:02

Das wäre super! Vielleicht helfen sie mir etwas. Hast du diese digital oder wie hast du das gedacht?


Denne schrieb am 08.11.2015 um 20:23

Jep, sind alles pdfs :)
Ich lads morgen für dich hoch.


SeVen schrieb am 08.11.2015 um 21:16

Ein dickes Dankeschön das du sie mir zur Verfügung stellst. Ich hoffe sie helfen mir =) Ich bin gespannt! Erstmal einen schönen Sonntag Abend noch!


tinker schrieb am 08.11.2015 um 21:55

Zitat von SeVen
Wie kann ich denn nun die Variable Zustand mit dem neuen Zustand aus der Übergangstabelle initialisieren?
Ok, ich glaub ich hab dich mit dem Zustandsarray das ich mal vorgeschlagrn hab etwas verwirrt.

Wenn du nur mit einer Zustandsvariable arbeitest is es ganz einfach (falls der array Zugriff in java so funktioniert):
Code:
Zustand = Zustaende[Zustand][Eingabe];

Wobei man Variavlen in Java klein schreibt. Würd ich noch ändern.

EDIT: @Denne: nein, sollt passen. laut übergangstabelle kommt man, sobald man sich im zustand Komma oder KommaZahl befindet in den Fehlerzustand wenn noch ein Komma eingegeben wird. gleiches gilt fürs vorzeichen.


Denne schrieb am 09.11.2015 um 07:59

@ tinker: Meine Aussage bezog sich auf den Code und ich habe es getestet, da wurde leider alles als Zahl erkennt, solange das letzte Zeichen eine Ziffer ist.

Hier mal meine Lösung, die hoffentlich passen sollte:

Code:
	        char[] zeile;
		int zustand = 0;
		boolean invalid = false;
		
		// Für Testzwecke
		String eingabe = "-91,4";
		zeile = eingabe.toCharArray();

		for (int i = 0; i < zeile.length; i++) {
			if (((zeile[i] == '+') || (zeile[i] == '-')) && zustand == 0) {
				zustand = 1;
			} else if (zeile[i] >= 48 && zeile[i] <= 57 && (zustand == 0 ||zustand == 1 || zustand == 2)) {
				zustand = 2;
			} else if (zeile[i] == ',' && zustand == 2) {
				zustand = 3;
			} else if (zeile[i] >= 48 && zeile[i] <= 57 && (zustand == 3 || zustand == 4)) {
				zustand = 4;
			} else {
				// Sobald wir eine ungültige Eingabe haben merken wir uns dies.
				invalid = true;
			}
		}
		
		// Je nach Zustand ausgeben, um was es sich handelt.
		if (!invalid && zustand == 2) {
			System.out.println("Ganze Zahl");
		} else if (!invalid && zustand == 4){
			System.out.println("Dezimalzahl");
		} else {
			System.out.println("Keine Zahl");
		}
	}

Mein Automat ist identisch zu dem vom schizo, fängt aber beim Zustand 0 an.

@ seven: Dein primäres Problem war, dass du nie überprüft hast, in welchem Zustand du dich überhaupt befindest. Du bist fröhlich von einem Zustand in den nächsten gesprungen, aber das unabhängig von deinem aktuellen Zustanden. Dazu noch paar Schönheitsfehler wie Variablen mit Großbuchstaben zu Beginn, Formatierung und das int-Array am Ende, was du nicht gebraucht hast.

Link zu meinem Uni-Zeugs kommt gleich per pm.


SeVen schrieb am 09.11.2015 um 22:34

Oh man. Ein riesengroßes Dankeschön! Vor allem die Zeit, die ihr für mich investiert habt. Freue mich auf die Unterlagen. Ich hoffe ich werde nicht scheitern an Informatik und hoffe das es mich weiterbringt!


Obermotz schrieb am 09.11.2015 um 22:38

Tipp fuer die Uni: Lerngemeinschaften bilden! Es gibt LVAs, die haett ich ohne Kollegen nie geschafft.


Denne schrieb am 09.11.2015 um 22:52

Den Tipp von Obermotz kann ich so bekräftigen :)
Eine gute Lerngruppe ist goldwert!


deleted76548677 schrieb am 10.11.2015 um 19:13

Zitat von Denne
Jep, sind alles pdfs :)
Ich lads morgen für dich hoch.

Muahaha. Die kreuchen und fleuchen auch auf meiner platte noch rum. :D

Sry für OT.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026