1. #1

    Registriert seit
    09.12.2014
    Beiträge
    1
    Thanked 0 Times in 0 Posts

    Standard Brauche 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.

  2. #2
    Avatar von Nuebel
    Registriert seit
    23.11.2013
    Beiträge
    446
    Thanked 361 Times in 236 Posts

    Standard 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.

  3. The Following 3 Users Say Thank You to Nuebel For This Useful Post:

    Darkfield (10.12.2014), Gameboy9 (09.12.2014), VW Kaefer (29.01.2016)

Ähnliche Themen

  1. Brauche Hilfe bei einem Gewinnrechner
    Von Silvatris im Forum C++
    Antworten: 1
    Letzter Beitrag: 02.07.2013, 22:01
  2. [Liebe] Brauche Hilfe -.-
    Von Disturbed im Forum Zwischenmenschliches
    Antworten: 13
    Letzter Beitrag: 03.06.2012, 19:46
  3. [HTML] Aufgaben Hilfe
    Von Dost im Forum HTML
    Antworten: 3
    Letzter Beitrag: 19.03.2012, 18:01
  4. Problem mit Windows brauche hilfe
    Von Sm1l3y-fr33k im Forum Windows
    Antworten: 12
    Letzter Beitrag: 24.02.2012, 21:29
  5. [Hilfe] Brauche hilfe bei Visual Basic
    Von Anonymous im Forum Sonstige
    Antworten: 3
    Letzter Beitrag: 25.11.2011, 23:36
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.