-
09.12.2014, 05:02 #1
- Registriert seit
- 09.12.2014
- Beiträge
- 1
Thanked 0 Times in 0 PostsBrauche Hilfe und Erklärung bei Aufgaben
Hey ich hoffe jemand von euch kann mir weiterhelfen ich verstehe die Aufgaben nicht könnt ihr mir evtl. einen Ansatz geben?
Es sei a = (a0, a1, . . . , an−1) eine n-stellige Binärziffernfolge mit ai ∈ {0, 1}. Die Ableitung
von a ist die n-stellige Bin¨arziffernfolge b = (b0, b1, . . . , bn−1) mit bi ∈ {0, 1}, deren Ziffern
folgendermaßen entstehen.
Für i = 0, . . . n − 1 gilt:
bi = 0 falls i = 0 und ai = 0
bi = 0 falls i > 0 und ai = ai−1
bi = 1 sonst
1. Was stellt die Ableitung da? D.h. wenn die Ableitung gegeben ist, welche Aussagen
kann man dann über die abgeleitete Binärziffernfolge treffen?
2. Gebenen Sie Java-Code einer rekursiven void-Methode an, die die Ableitung einer
Bin¨arziffernfolge bestimmt.
Unter den Parametern der Methode befindet sich genau ein Feld mit Bin¨arziffern.
Dieses Feld wird mit jedem Methodenaufruf weitergereicht und w¨ahrend der Abarbeitung
des Algorithmus mit der Ableitung uberschrieben. Die Methode verwendet, ¨
neben dem ubergebenen Feld, kein weiteres Feld. ¨
Wie sieht ein Aufruf der Methode aus?
Hinweis. Durchlaufen Sie das Feld vom an−1 nach a0.
3. Formulieren Sie eine Vorschrift fur die Umkehrung der Ableitung, d.h. eine Vorschrift, ¨
die angibt, wie man aus einer gegebenen Ableitung die abgeleitete Binärziffernfolge
bestimmt.
4. Gebenen Sie Java-Code einer iterativen void-Methode an, die die Umkehrung einer
Ableitung bestimmt, entsprechend der Vorschrift aus Aufgabenteil 3.
Die Methode arbeitet auf der Eingabe, d.h. die ubergebene Binärziffernfolge wird
w¨ahrend der Abarbeitung des Algorithmus mit der Umkehrung uberschrieben. Die ¨
Methode verwendet, neben der Eingabe, kein weiteres Feld.
Hinweis. Durchlaufen Sie das Feld vom a0 nach an−1.
-
09.12.2014, 15:36 #2
AW: Brauche Hilfe und Erklärung bei Aufgaben
Hi,
schau dir doch einmal ein Beispiel an (n = 8):
a = (1, 0, 0, 1, 1, 1, 0, 0)
Die definierte Funktion auf a angewendet ergibt:
b = (1, 1, 0, 1, 0, 0, 1, 0)
Es ist zu sehen, dass b den Anfang und das Ende (exklusiv) der gesetzten Bit(-Bereiche) in a angibt.
Jetzt wenden wir spaßeshalber die binären bitweisen Operatoren an:
a = (1, 0, 0, 1, 1, 1, 0, 0)
b = (1, 1, 0, 1, 0, 0, 1, 0)
-----------------------------
c = (1, 0, 0, 1, 0, 0, 0, 0) (AND)
a = (1, 0, 0, 1, 1, 1, 0, 0)
b = (1, 1, 0, 1, 0, 0, 1, 0)
-----------------------------
c = (1, 1, 0, 1, 1, 1, 1, 0) (OR)
a = (1, 0, 0, 1, 1, 1, 0, 0)
b = (1, 1, 0, 1, 0, 0, 1, 0)
-----------------------------
c = (0, 1, 0, 0, 1, 1, 1, 0) (XOR)
AND und OR ergeben Unsinn. XOR hingegen scheint Etwas zu ergeben, das man bereits kennt. Eine Rechtsverschiebung um eins. a XOR b == a' >> 1. Um genau zu sein, ist es eine logische Verschiebung. Vorzeichen oder Mantisse und Exponent bei Gleitpunktzahlen werden nicht berücksichtigt. Im Dezimalsystem entspricht das die ganzzahlige Division durch 2. a XOR b == a' >> 1 == a' / 2 wobei a' die Dezimaldarstellung von a ist.
Diese Funktion in Java reskursiv zu programmieren ist nicht möglich, wenn die Methode nichts zurückgeben und außer die Ausgangs-Binärziffernfolge keine weitere Parameter entgegennehmen darf. Außer vielleicht, wenn die Laufvariable als Instanzvariable vorhanden wäre, aber dann würde ich ganz ganz stark an das OOP-Verständnis des Aufgabenstellers zweifeln. Hast du die Aufgabenstellung 1 zu 1 übernommen?
public void apply(int[] a, int n) {
if (n < 0)
return;
if (n == 0 && a[n] == 0)
a[n] = 0;
else if (n > 0 && a[n] == a[n-1])
a[n] = 0;
else
a[n] = 1;
apply(a, n - 1);
}
Ließe sich eleganter machen, aber hier kann man schön die die Funktionsvorschrift für b erkennen.
Aufruf:
[...]
int[] a = new int[] {1, 0, 0, 1, 1, 1, 0, 0};
instance.apply(a, a.length -1);
[...]
Jetzt kannst du dir Gedanken über die Umkehrfunktion machen.
-
The Following 3 Users Say Thank You to Nuebel For This Useful Post:
Ähnliche Themen
-
Brauche Hilfe bei einem Gewinnrechner
Von Silvatris im Forum C++Antworten: 1Letzter Beitrag: 02.07.2013, 22:01 -
[Liebe] Brauche Hilfe -.-
Von Disturbed im Forum ZwischenmenschlichesAntworten: 13Letzter Beitrag: 03.06.2012, 19:46 -
[HTML] Aufgaben Hilfe
Von Dost im Forum HTMLAntworten: 3Letzter Beitrag: 19.03.2012, 18:01 -
Problem mit Windows brauche hilfe
Von Sm1l3y-fr33k im Forum WindowsAntworten: 12Letzter Beitrag: 24.02.2012, 21:29 -
[Hilfe] Brauche hilfe bei Visual Basic
Von Anonymous im Forum SonstigeAntworten: 3Letzter Beitrag: 25.11.2011, 23:36
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.