Info Hausaufgaben

Status
Nicht offen für weitere Antworten.
I

Info

Gast
ey,

mag mir jemand bei meiner Info Hausaufgabe helfen? peinlich/erstaunt

Folgendes müssen wir machen:


Schreiben Sie in FJava eine Funktion Seq<Boolean> binadd(Seq<Boolean> a, Seq<Boolean>
b), die zwei Zahlen in Bin¨ ardarstellung addiert. Implementieren Sie diese Funktion OHNE Zuhilfenahme
der obigen Konverterfunktionen.



Die Funktionen die zur Verfügung stehen sind Sachen wie divide(a,b), power(a,b), multiply(a,b) und natürlich + -.
Um eine Sequenz zu erstellen benutzt man cons(arg1,arg2,...,argn). Sequenzen kann man mit concat(seq1, seq2) zusammenlegen.
Die Funktion muss rekursiv sein, und ich habe nach 2h rumgepopel immer noch keinen blassen Schimmer wie ich das hinkriegen soll.
 

klein-odd

Aktives Mitglied
Hallo !
hast Du zumindest eine Vorstellung, was Du berechnungstechnisch zu tun hast ?

Java stellt ein umfangreiches Paket der Sprachreferenzen zu Verfügung
das man sich auch herunterladen kann (mehrere MB ein zip Format).
Nach dem Entzippen kann man in den html Blättern nach Details suchen.

Aber den Lösungsweg müsstest Du irgendwie selbst erarbeiten.

Java ist mächtig aber ist nur eine Programnmiersprache ...
Kann nichts selbst erfinden.

Hast Du schon mal ein JAVA Programm geschrieben und gestartet ?

Gruß, klein-odd
 

klein-odd

Aktives Mitglied
Hey,
nach einer nüchternen Nacht ist mir folgendes eingefallen :

1. Du hast zum Addieren zwei Zahlen in binärdarstellung, ja ?
2. Als Ergebnis sollst Du auch eine Zahl in binärer Darstellung erhalten, ja?
3. Die übliche Darstellung mittels "null" und "eins" soll in boolesche Werte umgewandelt werden, ja ?

Es bleibt nochals Geschmackssache, ob Du das Ergebnis als Kette von "einsen" und "nullen"
darstellen willst.

Momentan weiss ich, dass man auch boolesche Arrays bilden kann,
also die Zahl 7 (binär dargestellt als 1111) kann man in der booleschen Darstellung als

Code:
boolean[] z = {true, true, true, true};

schreiben.

Im Prinzip würde ich so vorschlagen :

Tipp 1:
Du stellst Dir die Zahlen (im Programm) gegenüber
und Du "machst" sie gleich lang (die "kürzere" füllst Du mit false auf)

Tipp 2:

Du bildest Dir ein Array für Speichern von Ergebnis,
nicht der Länge, wie die beiden Zahlen hatten, sondern um eine Stelle länger.
Für die Initialisierung dürfte das Array mit false bestückt werden

Tipp 3:

Addition zweier 0 ergibt 0
Addition von 0 und 1 (auch von 1 und 0) ergibt 1
Addition von 1 und 1 ergibt 0 und Übertrag 1

Der Übertrag ist der dritte Summand an jeder Stelle,
am Anfang soll er Wert 0 haben (boolesch : false sein).
In Deinem Beispiel darf er ein Skalar sein (nur ein Wert, binär),
weil im Fall des höchsten Übertrages (Addition 1+1+1)
das Ergebnis 1 beträgt und der Übertrag selbst auch 1.

Den Rest kannst Du Dir in Ruhe vorstellen und Entwickeln.

Mein Muster für die Lösung ist eine Klasse zu schreiben,
in der die Zahlen addiert werden und das Ergebnis gebildet wird.

Die Addition selbst wird in der Methode boolAdd durchgeführt,
die als Ergebnis ein Array des Types boolean gibt.

Natürlich statt des abstrakten Einfalls nit dem key dees Typs Integer könnten
beide Zahlen, schon als boolean[] eingelesen werden.

Code:
public class addition 
{
	static boolean[] bx={true,true,false,true};
	static boolean[] by={false,true,false,true};
	static boolean[] bz = new boolean[4];
	// den Eingangsparameter key habe ich als Erweiterung gedacht
	public static boolean[] boolAdd(int key)
	{
		for(int i =0; i<bz.length;i++)
		{
			//Deine Codezeilen
		}
		return bz;
	}

}

in einer anderen Klasse kannst Du dann dass Ergebnis so aufrufen,
dass Du Dir eine Variable boolean bildest und den Effekt der Methode vergibst, etwa so:


Code:
int irgendwas;
boolean[] ergebnis = addition.boolAdd(irgendwas);

statt des irgendwas kannst Du natürlich die beiden binären Zahlen
als Eingangsparameter übergeben.

etwa so:

Code:
boolean[] x={true,true,false,true};
boolean[] y={false,true,false,true};

boolean[] ergebnis = addition.boolAdd(x,y);

//in solchem Fall, sollte Die addierende Methode den Kopf so haben ;

            public static boolean[] boolAdd(boolean[] bx, boolean[] by)



Mach's gut, klein-odd :shock:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben