"We are back" « oc.at

Endlicher Automat

SeVen 07.11.2015 - 11:17 7451 45 Thread rating
Posts

SeVen

Little Overclocker
Registered: Apr 2006
Location: Germany
Posts: 96
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

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Wann ist die Abgabe?

SeVen

Little Overclocker
Registered: Apr 2006
Location: Germany
Posts: 96
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

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
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

Little Overclocker
Registered: Apr 2006
Location: Germany
Posts: 96
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

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
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

Little Overclocker
Registered: Apr 2006
Location: Germany
Posts: 96
Das wäre super! Vielleicht helfen sie mir etwas. Hast du diese digital oder wie hast du das gedacht?

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Jep, sind alles pdfs :)
Ich lads morgen für dich hoch.

SeVen

Little Overclocker
Registered: Apr 2006
Location: Germany
Posts: 96
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

SQUEAK
Avatar
Registered: Nov 2005
Location: NÖ
Posts: 5250
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.
Bearbeitet von tinker am 08.11.2015, 22:01

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
@ 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.
Bearbeitet von Denne am 09.11.2015, 08:03

SeVen

Little Overclocker
Registered: Apr 2006
Location: Germany
Posts: 96
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

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Tipp fuer die Uni: Lerngemeinschaften bilden! Es gibt LVAs, die haett ich ohne Kollegen nie geschafft.

Denne

Here to stay
Avatar
Registered: Jan 2005
Location: Germany
Posts: 2801
Den Tipp von Obermotz kann ich so bekräftigen :)
Eine gute Lerngruppe ist goldwert!

sk/\r

i never asked for this
Avatar
Registered: Dec 2002
Location: oö
Posts: 11015
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.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz