0 Daumen
335 Aufrufe

Hallo zusammen,


Ich quäle mich schon seit Stunden herauszufinden, warum man auf bestimmte Lösungen der Variablen in dem folgenden Programm kommt. Mich interessiert diese Aufgabe einfach, nur weiß ich nicht, wie man auf die entsprechenden Lösungen gekommen ist.


Daher bitte ich euch um Hilfe, ich komme dort einfach nicht mehr weiter :(

Ihr würdet mir wirklich weiterhelfen, wenn mir jemand erklären kann, wie man auf die Variablen Werte kommt

Danke schon mal vorab !


Bild Mathematik

von

Gut die Lösung von a kann ich mir so herleiten:

Das Array wt hat an der Stelle 2 eine Null stehen, daher ist a = 0;

Wenn ich jetzt den Eintrag des Arrays von wt und 0 nehme komme ich auf 5, da y ei float ist muss ganzzahlig geteilt werden also 19 % 5 = 4 so komme ich auf b = 4;

tx ist 19 Zeichen lang 19/ 4 wegen int ist dann gleich 4, ergo c = 4;

d ergibt sich aus Ascii Tabelle 9 Element im Array ist eine 9 und das ist eine 57 im Ascii, d=57;



Aber wie geht es mit e weiter ?

Es ist immer hilfreich, die Programmiersprache zu erwähnen. Nicht jede akzeptiert solche Eingabe wie oben :)

Vom inlcude der math.h ausgehend würde ich von C ausgehen.

Zur Aufgabe e: Der Wert von "A" müsste 121 sein (ich weiß jedoch nicht, wo dieser herkommt), denn nur für x=121 gilt: x + √x = 132.


PS: Ich bin kein Fan von solchen Aufgaben. Beim Programmieren geht es um saubere Arbeitsweise, nicht um "so kurz notiert wie möglich". Es ist sinnvoller, wenn jemand, der noch kein Experte in der Sprache ist, versteht, was dort passiert. Aber vermutlich steht bei dieser Aufgabe nur das Verständnis im Vordergrund, was im Hintergrund passiert.

Stimmt ist einleuchtend wie man dann auf 132 kommt wegen += und eben der Wurzel. Danke


f und n liefern jeweils Wahrheitswerte, f ist falsch und daher 0, n ist richtig daher 1. Passt.


Danke auch für den Hinweis der Programmiersprache, hab ich ganz vergessen zu erwähnen:

Programmiersprache ist C 


Die anderen sprich: g,h,i,k,m sowie p,q und r konnte ich noch nicht lösen, dabei bräuchte ich ein wenig Unterstützung

Ist vielleicht jemand so freundlich und hilft mir etwas auf die Sprünge für die Werte von:

g,h,i,k,m, p,q, r

Das wäre sehr nett, danke !

Mein C ist zwar etwas eingerostet, aber: pt ist ein Pointer auf die Adresse vom ersten Zeichen des Strings tx. Dann wird der um ein Byte weitergeschoben, zeigt also auf das "l" von "Klausur". g wird dann auf das gesetzt was an Adresse von pt steht, der Inhalt dann um eins erhöht, also eins weiter als l, was ein kleines m im Alphabet ist. Bei h passiert etwas anderes, da wird in Klammern gesagt, Adresse von pt +1 also das da wo das a im String steht, und davon der Inhalt, also a. Es wird nicht "der Inhalt geholt" und der um 1 erhöht, sondern die Variable schon vorher. i in der for-Schleife von 1 runter durchlaufen, in 1er Schritten, solange i > als -1 ist. Also einmal mit dem Wert 1, dann einmal mit 0 und dann wird er -1 und die Schleife beendet vorher. Damit wird k = i*i zuletzt mit i=0 ausgeführt, womit k = 0*0 = 0 ist und i ist ja am Ende -1. jn wird zu Beginn direkt auf 1 gesetzt, also Wahr. Weiter unten wird (beim if), falls jn wahr ist (was ja der Fall ist), m auf den negierten Wahrheitswert von jn gesetzt. Also False (=> 0). Die anderen sind Bitgeschubse, da hab ich jetzt keine Lust mehr drauf ;-) Vielleicht mag ja noch jemand.

Danke, das hat mir schon weiter geholfen. Beim ersten Pointer war ich immer bei l anstatt bei m, ich habe einfach das pt++ vergessen.


Das letzte für p,q,r sagt mir jetzt noch nichts:

"Bitgeschubse", hab ich mir fast schon gedacht p und q sagen mir da leider zu wenig

Kann mir bitte noch jemand das Bitgeschubse erklären, das wäre sehr nett, dann hätte ich auch alles verstanden ;-)

1 Antwort

+1 Daumen

Ok, hier noch p, q und r. Sind alle ints (ok, p ist per default meine ich signed ist aber hier(!) grad egal). Der vollständigkeithalber mal die 4 Bytes die die ints normalerweise groß sein dürften ausgeschrieben:

p wird auf z & q gesetzt, also das Ergebnis der logischen, bitweisen &-Operation. (erstmal alle Bytes ausgeschrieben, in der dritten Zeile das Ergebnis. Dann die XOR-Verknüpfung von z und 2, dann z um 2 Bits geshiftet.


z 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 1 1
q 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 1 0 1 0 1 0
z&q
p 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 1 0 = 2


z 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 1 1
2 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 1 0
z ^ 2
q 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 0 1 = 5


z 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 1 1
z << 2
z 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 1 1 1 0 0 = 28

Zu den Verknüpfungen/Operationen selber hab ich jetzt nichts geschrieben, schau mal ob du da durchsteigst, google mal logisches und, xor und bitshift, dann sollte das klarer werden. Und versuch möglichst mit C rum, solche Sachen sind Standard, sollte man halbwegs durchblicken ;-)
von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community