Thema: Nassi-Shneiderman-Diagramm erstellen |
|
Hallo So ,
die Schleife wird ja solange durchlaufen wie n ungleich 0 ist. D.h. sobald n = 0, wird die schleife Abgebrochen.
Zum besseren Verständnis:
- n wird eingelesen (0)
- Das erste if geht in die rechte Seite
- Das zweite if in der rechten Seite geht wiederum in die rechte Seite
- Es wird nichts getan (Die rechte Seite ist leer)
- Die Schleifenbedingung schlägt fehl und somit die Schleife abgebrochen
Besten Gruß,
Karlito
|
|
Thema: Chattbots und so |
|
Hallo,
Bots sind eigentlich nie echte Roboter. Bots sind Programme, die automatisch auf Anfrage Aufgaben erledigen oder auf Anfragen antworten. Dabei sind sie zunehmend weniger doof und plappern nicht nur nach. Z.B. könnte eine Künstliche Intelligenz wie Alexa von Amazon so ein Bot sein und der ist schon in der Lage vieles zu verstehen und zu beantworten. Einfacherere Bots können wohl definierte Anfragen Bearbeiten. So könnte man sich einen Bot denken, der ein Whatsapp-Kontakt von dir ist und zu Hause zum Beispiel die Rolläden steuert. Du defnierst dann einfach die Befehle, die der Bot entgegennimmt und er führt dann die Befehle aus.
Besten Gruß,
Karlito
|
|
Thema: Java Grundlagen |
|
Hallo Badmann33,
b2 ist fast richtig. Du übergibst jedoch keinen String an den Konstruktor. Das solltest Du ändern.
Auf dem Blatt sehe ich zwei Fehker. Der Konstruktor ist nie static. Es soll ja Zoo auch nur einmal geben können. Daher darf man den Konstruktor auch nicht beliebig aufrufen können. Der Konstruktor muss also private sein. Das stellt sicher, dass er nur von Methoden in der selben Klasse aufgerufen werden kann. Deswegen gibt es die Methrode getInstance().
Weiterhin sollte der Name nicht public sein. Sonst könnte ja jeder von außen den Namen des Zoos ändern (Geheimnisprinzip).
Zur Lücke c1-1: Die Klasse Dog soll doch nicht unsichtbar sein. Private Klassen braucht man eigentlich nur, wenn man Klassen in Klassen definiert, die von Außen nicht sichtbar sein sollen. public tut es hier also. Wenn die Klasse jedoch eine abstrakte Methode enthalten soll muss die Klasse auch abstrakt sein. D.h. in die erste Lücke muss "public abstract".
Die weite Lücke soll eine Methode deklarieren, welche nur von den Kindklassen aus sichtbar ist und abstrakt ist -> "protected abstract"
Besten Gruß,
Karlito
|
|
Thema: Automat zur Sprache |
|
graphviz -> dot
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
|
digraph G {
graph [layout=dot rankdir=LR]
node [shape=none] qs [label=""]
node [shape=doublecircle] q3
node [shape=circle]
qs -> q0
q0 -> q1 [label="1"]
q1 -> q2 [label="0"]
q2 -> q3 [label="0"]
q0 -> q4 [label="0"]
q4 -> q2 [label="1"]
q4 -> q5 [label="0"]
q5 -> q3 [label="1"]
q1 -> qm [label="1"]
q2 -> qm [label="1"]
q3 -> qm [label="1"]
q3 -> qm [label="0"]
q5 -> qm [label="0"]
qm -> qm [label="0"]
qm -> qm [label="1"]
} |
|
Beste Grüße,
Karlito
|
|
Thema: Automat zur Sprache |
|
Nein. Von jedem Zustand müsste eine Kante abgehen, sobald eine Eingabe erfolgt, die nicht akzeptiert wird.
|
|
Thema: Automat zur Sprache |
|
Hallo NixJava und Theo_Info_12,
es gibt verschiedene Definitionen für endliche Automaten. In manchen Definitionen ist gegeben, dass alle nicht angegebenen Transitionen in den "Müll-Zustand" gehen. Bei NEAs ist es mir zum Beispiel nicht bekannt, dass sowas geforder ist und bei DEAs wird das manchmal einfach angenommen. Das kommt ein wenig auf den Dozenten an. Im Allgemeinen halte ich es bei DEAs auch für sinnvoll einen solchen Zustand anzugeben, da man dann schön kontrollieren kann, ob es auch von jedem Zustand aus für jedes Zeichen des Eingabealphabets auch einen Übergang gibt.
Besten Gruß,
Karlito
|
|
Thema: Turing Maschine String Vergleich |
|
Hallo Theo_Info_12,
Vorab: Theoretische Inf ist bei mir auch eine weile her. Bitte also alle Anahmen und Angaben kritisch hinterfragen.
zu 1) ich würde die Strings nicht von der Länge her vergleichen. Das wäre ein unnützer Schritt zu viel. Wir machen uns für jedes Zeichen des Eingabealphabets einen Zustand. Wir lesen das erste Zeichen des ersten Bandes und ersetze es direkt durch das leere Feld. Danach gehen wir bis zum ersten Zeichen nach den Trennzeichen '#' (mehrzahl ist hier gewollt). Wir erwarten da wieder das gleiche Zeichen wie beim ersten Wort. Wenn es das gleiche Zeichen ist, ersetzen wir es durch das Trennzeichen '#' und gehen zurück bis an den Anfang des ersten Wortes. Das wiederholen wir so oft, bis wir ungleiche Zeichen oder das Ende beider Worte erreicht haben. Das dürfte durch das Hin und Her quadratische Laufzeit ergeben.
zu 2)
Gleiche Eingabe wie in 1). Eingabe steht auf dem ersten Band. Wir gehen bis zum Zweiten Wort und Kopieren es auf das Zweite Band und laufen wieder Zurück bis zum Anfang des ersten Wortes. Laufzeit dürfte linear sein.
Dann Vergleichen wir Gleichzeitig Band 1 und 2. Laufzeit dürfte wiederum linear sein.
Insgesamt kommen wir also auf lineare Laufzeit.
Betrachtung der ersten TM: relativ sparsam, jedoch ungünstiges Laufzeitverhalten
Betrachtung der zweiten TM: Viele Zustsände (Es werden extra Zustände für das Kopieren gebraucht) + weiteres Band, jedoch günstiges Lauzeitverhalten
Da unabhängig von der Länge der Eingabewörter die Anzahl an zusätzlichen Zuständen gleich bleibt, die Laufzeit jedoch erheblich besser ist, gewinnt die zweite TM.
Besten Gruß
Karlito
|
|
Thema: Verständnis zum regulären Ausdruck |
|
Richtig lesen, lenix22!
Sobald Du ein Wort findest, welches in der einen Sprache, aber nicht in der anderen Sprache enthalten ist, dann sind die Sprachen nicht äquivalent!
Besten Gruß,
Karlito
|
|
Thema: Reguläre Sprache prüfen |
|
Hallo Klinger,
zu 2) Ich denke hier kann man das Pumping-Lemma weiterhin verwenden. Im Prinzip ändert sich ja nichts. Du nimmst Worte mit einer Mindestlänge her und weist nach, dass es dafür dann keine Zerlegung uvw gibt. Es kommt ja nur ein Wort der Länge 0 hinzu, das sollte den Rest nicht ändern.
zu 1) Angenommen a^nb^m mit n!=m wäre regulär, dann wäre das Komplement auch regulär (Abschlusseingenschaften von regulären Sprachen). Das Komplement ist die Sprache aus 2). Wenn 2) also nicht regulär ist, und 1) das Komplement von 2), dann kann 1) nicht regulär sein.
Das sind zumindest Ansätze.
Besten Gruß,
Karlito
|
|
Thema: Verständnis zum regulären Ausdruck |
|
Hallo lenix22,
wenn Du ein Wort findest, was vom regulären Ausdruck akzeptiert, von dem Automaten jedoch nicht Akzeptiert wird, dann sind die Sprachen nicht äquivalent.
Das Gleiche gilt, wenn ein Wort vom Automaten akzeptiert wird, der reguläre Ausdruck das Wort jedoch nicht enthält.
Besten Gruß,
Karlito
|
|
Thema: Bitmanipulation |
|
Ups, da ist mir ein fehler unterlaufen.
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
count =0
inverse = 0
cin >> zahl
for (int i=0; i<sizeof(int)*8;i++)
{
inverse <<= 1
inverse += zahl & 1
count+= zahl & 1
zahl >>=1
}
//Ausgabe
|
|
|
|
Thema: Bitmanipulation |
|
Ich habe dir die Grundlage für die gesamte Lösung gepostet. Wenn Du keine konkreten Fragen hast, kann ich dir nicht helfen.
Gruß,
Karlito
|
|
|
|
|