Klausurvorbereitung
-
;fricky schrieb:
wir sind 'ne entspannte runde, die gern über's C-programmieren philosophiert.
ja is schon okay...
Ich wünschte mir mal nur ne Runde voller Pro Frickler
-
aber wir haben ma so eine kleine Exkursion in C++ Programmierung gemacht, aber er meinte, dass es nicht in der Klausur drankommt, deswegen bin ich nicht in der Vorlesung gewesen
Dann sehen wir ja in 2 Wochen deinen Fragenkatalog im C++-Subforum.
-
nene ich gehe davon aus, dass C++ nicht drankommt... die Klausur ist ja vom Sommersemester und das ist etwas länger als das Wintersemester, deswegen ist es gut möglich, dass sie es etwas ausgiebiger durchgearbeitet haben.. Ich hab grad ne alte WS Klasur vor mir liegen, da ist auch nix von C++ ..
auzßerdem ist das ne kleine Teilaufgabe.. ich brauche ja keine 100% in der Klausur... wenn ich 50% hab, hab ich mit ner 4 bestanden und ich bin zufrieden..
-
xX Dany Xx schrieb:
Welchen Zahlenwert haben folgende Ausdrücke, wenn am Anfang stets
int x = 3, y = 2, z = 1; gegeben sein soll? Für die Auswertung genügt es, die letzten 4 Bits der Integerzahlen zu betrachten.
a) x | y & z
b) x | y & ~z
c) x ^ y & ~z
d) x & y && z
e) !x || za = 3 d = 1
b = 3 e = 1
c = 1Ist das richtig? Ich bin mir nicht sicher...
das sieht gut aus.
xX Dany Xx schrieb:
...ne Runde voller Pro Frickler
nana, jetzt nicht auch noch frech werden. *fg*
-
xX Dany Xx schrieb:
Mal kurz ne andere Aufgabe:
Ist das richtig? Ich bin mir nicht sicher...Mal kurz ein Hinweis:
1. Möglichkeit: Einsen und Nullen hinmalen, bitweise anhand der Operatoren unter Beachtung der Operatorpriorität verknüpfen. Spätestens dann solltest du dir sicher sein.
2. Möglichkeit: Deine schriftlichen Ergebnisse mit dem PC überprüfen, d.h. ein kleines C Programm schreiben. Spätestens jetzt bist du dir 100% sicher, ob du es richtig oder falsch hattest.Was hättest du denn davon, wenn dir hier jemand das Ergebnis hinschiebe?
-
ja mit stift und papier hab ichs probiert aber iwie funzt das nicht.. kannst dus mir mal zeigen?
Also ich hab bei der a) z.B. erstmal probiert x | y und das ergebnis dann & z und da kam 1 raus...
Also so:
0011 x 0010 y ---- 0011 0001 z ---- 0001
-
xX Dany Xx schrieb:
Also ich hab bei der a) z.B. erstmal probiert x | y und das ergebnis dann & z und da kam 1 raus...
du kannst sowas nicht einfach von links nach rechts ausrechnen. & hat vorrang vor |, d.h. du musst es als: x | (y & z) behandeln, also: 3 | (2 & 1)
-
achso ja stimmt, das habe ich gar nicht beachtet.. Wo kann ich die Rechnregeln finden? Weißt das jemand? Oder kann das jemand mal posten?
-
xX Dany Xx schrieb:
achso ja stimmt, das habe ich gar nicht beachtet.. Wo kann ich die Rechnregeln finden? Weißt das jemand? Oder kann das jemand mal posten?
google: 'logical operator precedence' oder so ähnlich.
-
Ich glaub jetzt bin ich komplett durch.. jetzt krieg ich nich mal son kleines dämmliches Programm hin..
Aufgabe 5 (20 Punkte)
Eine Zahl x vom Typ double soll von der Tastatur eingegeben werden. Die Zahl soll nur dann akzeptiert werden, wenn sie im Bereich –10.0 <= x < +10.0 liegt. Schreiben Sie für diesen Zweck ein Programm, das bei ungültiger Eingabe einen Hinweis ausgibt und die Eingabeaufforderung so lange wiederholt, bis die Zahl im geforderten Bereich liegt.Das habe ich geschrieben... aber warum springt er nicht aus der schleife raus? und warum gibt er nicht aus "Falsche Eingabe!"?
int main (void) { double x; do { printf ("Eingabe: "); scanf ("%d", &x); if (x>=-10 || x<10) printf ("x = %d\n", x); else printf ("Falsche Eingabe!\n\n"); } while (x<=-10 || x>10); getch(); }
-
xX Dany Xx schrieb:
Ich glaub jetzt bin ich komplett durch.. jetzt krieg ich nich mal son kleines dämmliches Programm hin..
glaub' ich auch, du solltest dich für heute besser auf's ohr hauen. was ist grösser als -10 und auch(<-- umgangssprachlich für logisches 'oder') kleiner als 10? richtig, alles. *fg*
btw, wieso nimmste 'ne double-variable, wenn du integers vergleichst?
-
xX Dany Xx schrieb:
achso ja stimmt, das habe ich gar nicht beachtet.. Wo kann ich die Rechnregeln finden? Weißt das jemand? Oder kann das jemand mal posten?
http://de.wikibooks.org/wiki/C-Programmierung:_Liste_der_Operatoren_nach_Priorität
xX Dany Xx schrieb:
ja mit stift und papier hab ichs probiert aber iwie funzt das nicht.. kannst dus mir mal zeigen?
Das kriegst du schon hin.
Bei dem Link oben, guckst du bei bitweises UND, das hat die Priorität 8, das bitweise ODER hat die Priorität 6.
Also wird bei dem Ausdruck x | y & z zuerst y & z ausgewertet und dann wird dieses Ergebnis mit x ODER Verknüpft, wie fricky ja bereits geschrieben hat.Aufgabe 2 hast du immernoch nicht gepostet.
Naja, morgen hab ich vllt. keinen Bock mehr zu und weil ich mir schon nen Wolf getippt habe, will ich dir das nicht vorenthalten:
Fehler Auswirkung auf den Programmlauf k ist nicht deklariert. Keine. Programm lässt sich erst gar nicht compilieren. Der Rückgabewert von malloc wird nicht Programmabsturz wenn malloc NULL liefert. überprüft. Das Feld wird nicht vollständig Abhängig vom Programm. gefüllt, der Index muss bis k=4 laufen. Der Speicher wird nicht freigegeben. Eventuell Memoryleak. k wird nicht inkrementiert. Endlosschleife. Kein Fehler aber problematisch: Der Rückgabwert von malloc sollte nicht gecastet werden. Kein Fehler aber unschön und nahezu sinnfrei: hartcodierte Anzahl der Integerelemente.
int k = 0; int *ar = malloc ( 5 * sizeof(int) ); // Versuch der Allokation. if ( ar == NULL ) return 1; // Es ist kein Speicher frei. do ar[k] = k++; while ( k<5 ); // Vollständige Initialisierung. while ( --k != -1 ) printf ( "ar[%d] = %d\n", k, ar[k] ); // Sind wir auch alle daaa? Bonus: gucki machen :) free ( ar ); // Speicher freigeben.
-
Ah coole Sache.. THANX
-
;fricky schrieb:
was ist grösser als -10 und auch(<-- umgangssprachlich für logisches 'oder') kleiner als 10? richtig, alles. *fg*
btw, wieso nimmste 'ne double-variable, wenn du integers vergleichst?
Nein nicht alles... größer als -10 und auch kleiner als 10 sind nur Zahlen von -10 bis 10 wenn ich das richtig überblicke...
x soll vom Typ double sein.. steht in der aufgabe.. aber ich blick da noch nicht so richtig durch...
-
Guck mal in deinem Script unter Eingabe/scanf/Format/Formatstring/Formatelemente oder hier heißen die Dinger auch Platzhalter:
http://de.wikibooks.org/wiki/C-Programmierung:_Einfache_Ein-_und_Ausgabe
-
xX Dany Xx schrieb:
Ah coole Sache.. THANX
fein, und was lernen wir daraus? dem prof. lauschen + selber lernen und sich mit dem zeug auseinandersetzen? aber nein, nur hartnäckig im ansi-C forum abhängen, denn hier werden sämtliche hausaufgeben prompt erledigt, wenn auch manchmal mit einer kleinen verzögerung. aber egal, jede strategie, die zum erfolg führt, ist eine gute strategie. *fg*
xX Dany Xx schrieb:
Nein nicht alles... größer als -10 und auch kleiner als 10 sind nur Zahlen von -10 bis 10 wenn ich das richtig überblicke...
naja, aber nicht in deinem code. grösser als -10 sind -9,-8,-7, usw, kleiner als 10 sind 9, 8, 7, usw. nimm irgendeine zahl und sie wird grösser als -10 oder kleiner als 10 sein, wetten? wenn du alle zwischen -10 und +10 brauchst, dann mach das || zum &&, also: if (zahl>-10 && zahl<10)
-
nee das sind ja keine Hausaufgaben.. aber ich hab relativ viel in kurzer Zeit zu lernen und deswegen dachte ich, dass ihr mir mit ein paar Aufgaben helfen könntet.. Ich habe auch schon in unserem TI Forum reingeschrieben, dass es schön wäre, wenn die Leute mal die Lösungen posten würden.. Weil es ist doof etwas zu lernen, wenn man sich nicht sicher sein kann, ob das was man rauskriegt richtig ist. Aber das habe ich heute erst angesprochen mal sehen was kommt.
;fricky schrieb:
und auch(<-- umgangssprachlich für logisches 'oder')
Dann ist das hier falsch
Umgangssprachlich für logisches OR ist einfach oder...
;fricky schrieb:
wenn du alle zwischen -10 und +10 brauchst, dann mach das || zum &&, also: if (zahl>-10 && zahl<10)
das hab ich probiert.. aber jetzt trifft genau der umgekehrte fall ein.. egal was ich eingebe, es ist alles falsche eingabe und er springt sofort aus der schleife raus..
-
Big Brother schrieb:
Guck mal in deinem Script unter Eingabe/scanf/Format/Formatstring/Formatelemente oder hier heißen die Dinger auch Platzhalter:
http://de.wikibooks.org/wiki/C-Programmierung:_Einfache_Ein-_und_AusgabeJa ich kenn das mit den Argumenttypen, aber.. da steht irgendwie nicht alles ... das ist total komisch... z.B. bei dieser Aufgabe ja:
Aufgabe 1 (20 Punkte)
Welche Werte haben die Variablen in jeder Zeile?
int i; long l; float f; double d;
a) i = l = f = d = 100/3; // i = ?, l = ?, f = ?, d = ?
b) d = f = l = i = 100/3;
c) i = l = f = d = 100/3.0;
d) d = f = l = i = (float) 100/3Kommts nicht drauf an was ich dann bei printf fürn Buchstabe nehme?
-
xX Dany Xx schrieb:
nee das sind ja keine Hausaufgaben.. aber ich hab relativ viel in kurzer Zeit zu lernen und deswegen dachte ich, dass ihr mir mit ein paar Aufgaben helfen könntet.. Ich habe auch schon in unserem TI Forum reingeschrieben, dass es schön wäre, wenn die Leute mal die Lösungen posten würden.. Weil es ist doof etwas zu lernen, wenn man sich nicht sicher sein kann, ob das was man rauskriegt richtig ist. Aber das habe ich heute erst angesprochen mal sehen was kommt.
ich glaub ich explodier schon wieder, du hast einfach nix gemacht, und kommst deswegen mit deiner zeit nicht klar, jeder der sich ein bischen mit c beschäftigt hat, sollte die aufgaben locker in ner halben stunde lösen können (maximal). ich hab mit dir kein mitleid. und werde auch alle fragen von xX Dany Xx in zukunft ignorieren.
es ist das letzte nichts zu machen und es dann hier lösen zu lassen damit du noch deine anderen fächer für die du nix gemacht hast lernen kannst.
programme kannst du ganz einfach validieren, schick sie durch den compiler aber selbst dazu bist du am ende des semesters nicht in der lage, ein trauer spiel ist das mit dir...
og lolo
-
wenn du in informatik ne note bekommst mit der du nicht durchgefallen bist sollte deinem lehrer sein "prof" entzogen werden.
solche faulen säcke wie du verschwenden in den unis meine steuer gelder und sollten alle von derartigen einrichtungen eliminiert werden.