Klausuraufgabe....
-
könntest du mir vllt kurz erklären was denn genau passiert?
offensichtlich wird die funktion (dadruch wirds für mich schon klarer^^)
mit dem wert 2899 gefüttert. dann erfolgt irgendeine modulorechnung mit resten?!
-
"Irgendeine Modulorechnung mit Resten", ja.

Such mal danach, wie man in verschiedene Zahlensysteme umrechnet.
-
Juleian* schrieb:
könntest du mir vllt kurz erklären was denn genau passiert?
offensichtlich wird die funktion (dadruch wirds für mich schon klarer^^)
mit dem wert 2899 gefüttert. dann erfolgt irgendeine modulorechnung mit resten?!genau. wenn man sich mal den algorythmus ansieht, würde man auch ziemlich schnell sehen, was da genau passiert.
edit: tz, schon wieder alles verraten - und dann auch noch vor mir^^
-
ja wie man in in verschidene zahlensysteme umrechnet kann ich. da das ergebnis nur 10101010 is müsste es das binärsystem sein. aber wie setzt das programm das um und woran erkennt man überhaupt was im einzelnen passiert.... bin im 1.semester, seid also gnädig mit mir

-
Die Funktion macht das im Prinzip genau so, wie du es auch auf dem Papier machen würdest? Was gibt es da nicht zu verstehen?

Am besten du nimmst dir einfach mal ein Blatt Papier und verfolgst den Programmablauf.Bei main() wird angefangen. Als erstes wird "Ergebnis: " ausgegeben, gut das ist nicht so spannend. Dann wird funktion(2899) aufgerufen. Ok, also springen wir in "funktion()". wert ist jetzt 2899. Ist wert mod 2 == 0? Nein, also packen wir eine '0' vorne an "Ergebnis". Jetzt teilen wir wert durch 2, wert ist jetzt 1449. (Integerdivision, alles hinterm Komma wird abgeschnitten.)
Und so weiter und so fort.
PS: Bist du dir sicher, dass die if() Abfrage so sein soll? Die macht nämlich für das Binärsystem genau da Nullen hin wo Einsen sein sollten und umgekehrt.
-
hab das so aus ner altklausur kopiert, kann ja als zusätzliche hürde so gemacht sein^^ deine beschreibung hilft mir auf jeden fall schon mal das ganze nachvollziehen zu können^^
-
1. Gucke, was Zahl modulo 2 ist. Wenn es 0 ist, merken wir uns die Ziffer '0', wenn es 1 ist, merken wir uns die Ziffer '1'. Warum? Wie bekommt man die letzte Ziffer einer Zahl im Zehnersystem? Man schaut sich die Zahl modulo 10 an! 12345 % 10 = 5, 54321 % 10 = 1. Genauso im Zweiersystem, aber eben mit 2 als Basis.
2. Teile durch Zwei und vergesse den Divisionsrest. Warum? Wie schiebt man eine Zahl im Zehnersystem um eine Ziffer nach rechts? Man teilt durch 10 ohne Rest! 12345 / 10 = 1234, 54321 / 10 = 5432. Genauso im Zweiersystem, aber eben mit 2 als Basis.
3. Gehe zurück zu 1., bis der Wert 0 geworden ist.
-
cooky451 schrieb:
PS: Bist du dir sicher, dass die if() Abfrage so sein soll? Die macht nämlich für das Binärsystem genau da Nullen hin wo Einsen sein sollten und umgekehrt.

Das ist wahrscheinlich Absicht. Das Programm soll nichts sinnvolles tun. Die Ursprungsfassung war ja sogar absichtlich schwer verständlich. Man soll lernen, wie man selber Programmcode nachvollziehen kann und zwar nicht einfach am Ergebnis ablesen, sondern indem man sich den Code anguckt und versteht. Leider etwas, wo der Threadersteller in doppelter Hinsicht versagt hat
, da er erstens schon bei Lesen des Codes gescheitert ist als auch den sauber aufgeschriebenen Algorithmus nicht nachvollziehen konnte.
-
Hab das Programm so soweit nachvollziehen können, nur verstehe ich nicht ganz warum das Programm: 010010101100 ausgibt. Hätte das Ergebnis genau in verkehrter reihenfolge ausgegeben. Woran kann man im Quellcode sehen, dass die Neue Zahl bei 0 oder 1 + alpha vor die alte kommt und nicht dahinter?
hoffe ihr versteht was ich meine

-
alpha ="1" + alpha;Bedeutet aus "1" + alpha wird ein neuer temporärer String gebildet und an alpha zugewiesen.
Anfügen wärealpha = alpha + "1";wobei man in im Falle des Anfügens auf den temporären String verzichten und besser
alpha += '1';schreiben sollte.