.j
-
Oh mein Gott, if-else Verzweigungen benutzt man doch mehr oder weniger sogar im normalen Sprachgebrauch ...
Was die Aufgabe angeht : Geh einfach mit allen Zahlen durch diese drecks Kaskade durch, schau zu welchem Output die Kaskade für diese Zahl kommen würde und vergeleiche das mit der Vorgabe. Schwer ??
-
Ich bin mir nicht ganz sicher, ob das jetzt so richtig ist. Wäre super nett, wenn nochmal jemand drüber schauen könnte...
zu if-kaskade 1:
Eingabe erfüllte Bedingung Ausgabe entspricht dies der Anford.?
105 <=106 S ja106 <=106 S ja
107 >=106 M ja
108 >=106 M ja
109 >=106 M nein, da L rauskommen müsste
110 >=106 M nein, da L rauskommen müsste
Warum kann ich denn bei 109 und 110 als erfüllte Bedingung nicht >=108 nehmen? Dann würde ja L rauskommen. Ist es, weil "die Bedingung >=106 über der Bedingung >=108 steht"?
zu if-Kaskade 2:
Eingabe erfüllte Bedingung Ausgabe entspricht dies der Anford.?
105 "andernfalls" S ja106 "andernfalls" S ja
107 >106 M ja
108 >106 M ja
109 >108 L ja
110 >108 L ja
zu if-Kaskade 3:
Eingabe erfüllte Bedingung Ausgabe entspricht dies der Anford.?
105 <107 und >=105 S ja106 <107 und >=105 S ja
107 >=105 S nein, da M rauskommen müsste
108 >=105 S nein, da M rauskommen müsste
109 >108 M ja
110 >108 M ja
Kann ich bei 105 und 106 die erfüllten Bedingungen so hinschreiben mit dem und?
zu if-Kaskade 4:
Eingabe erfüllte Bedingung Ausgabe entspricht dies der Anford.?
105 <=106 S ja106 <=106 S ja
107 >=106 M ja
108 >=106 M ja
109 >=109 L ja
110 >=109 L ja
Kann man das als Aufgabe so auf ein Blatt schreiben und abgeben???
-
cvcv schrieb:
Schwer ??
Für einen normalen Menschen nicht, für Juli offenbar schon
@Juli: Die erste Aufgabe hatte ich dir ja freundlicherweise vorgerechnet. Bei der 109 und 110 landest du du im Abschnitt
printf("M");
, weil die einzelnen Abfragen von oben nach unten geprüft werden.
-
Danke, dass ich nicht normal bin. Was kann ich denn dafür, dass man einfach so ins kalte Wasser geschmissen wird? Der Prof. erklärt es nicht und liest nur von seinen Blättern ab. Aber ok, ich bin nicht normal!
Ich hab meine Lösung nochmal dort hingeschrieben... Kann bitte jemand drüber gucken?
-
Wenn der Prof schon nichts taugt, dann such dir wenigstens ein vernünftiges Buch, um das auszugleichen
Zu deinen Angaben: Die Teile 2 und 4 dürften hinkommen, bei Teil 3 komme ich auf ein anderes Ergebnis - wenn auch mit der selben Bedeutung für die Aufgabe.
(btw, ist es eigentlich Absicht, daß die Teilaufgaben durcheinander in der Aufgabe standen?)
-
Würde ich gerne, mein Akku geht aber zu Neige ( und "Kein Eintragsmodus gewählt" trägt nicht gerade postiv dazu bei -.- ) . Zum Thema : " Der liest nur vor, erklärt kaum was : " Gewöhn dich dran. Uni =! Schule. Von dir wird erwartet, dir das, was du nicht verstehst, selber zu erarbeiten, seis mit Büchern oder dem Internet ( etwa in Foren, wo man dir das Ganze dann einprügeln muss ...
). Am besten besorgst du Dir ein anständiges Buch zu C und liest das jeden Tag. Dann verstehst du auch mehr in den Lesungen.
-
Bei der Kaskade drei verstehe ich das auch nicht ganz... Da steht zweimal if untereinander. Müssen dann, damit S rauskommt, beide IFs gelten?
Ja, ich hatte das irgendwie komisch hier eingefügt, sry!
-
Juli84 schrieb:
Bei der Kaskade drei verstehe ich das auch nicht ganz... Da steht zweimal if untereinander. Müssen dann, damit S rauskommt, beide IFs gelten?
Ja, müsste es - und damit L herauskommt, muß die erste Bedingung erfüllt sein und die zweite fehlschlagen.
-
Also sieht die 3. Kaskade so aus? :
Eingabe erfüllte Bedingung Ausgabe entspricht dies der Anford.?
105 <107 und >=105 S ja106 <107 und >=105 S ja
107 "andernfalls" M ja
108 "andernfalls" M ja
109 >108 L ja110 >108 L ja
Dann würde ja die Kaskade auch so stimmen, oder? Also würde von Kaskade 1-4 nur das in der 1.Kaskade nicht stimmen?!
-
Nein - bei 109 und 110 ist schon die erste Bedingung falsch, da landest du nicht in der inneren if-Anweisung, sondern auch im hintersten else-Zweig (mit dem L).
-
Also kommt bei 109 und 110 auch jeweils ein M hin und somit entsprechen in der dritten Kaskade 107, 108, 109 und 110 nicht den Anforderungen... Hmm.
Ich meinte nur 109 und 110 falsch, weil da ein L hinmüsste. Bei 107 und 108 muss ja gerade ein M ist - was auch der Fall ist!
-
Stimmt das alles jetzt so? Weil dann würde ich das so abtippen!
-
Nein:
if ( laenge < 107 ) { if ( laenge >= 105) printf( "S" ); else if ( laenge > 108 ) printf( "L" ); } else printf( "M" );
Überleg doch mal, was für einen Wert
laenge
haben muß, damit du zur Ausgabe "L" kommen kannst.
-
Hmmm... Die erste Bedingung muss gelten, also heißt das, dass da nur 108, 109 und 110 in Frage kommt. Die zweite Bedingung muss fehlschlagen, also fallen dann 109 und 110 weg. Also 108!
Oder? :S
-
Juli84 schrieb:
Hmmm... Die erste Bedingung muss gelten, also heißt das, dass da nur 108, 109 und 110 in Frage kommt.
Ist dir klar, was das < bedeutet? (auf Deutsch: "kleiner als")
(außerdem hast du insgesamt drei if-Anweisungen, denen du auf dem Weg begegnest)
-
105 und 106...
-
if ( laenge < 107 ) // laenge ist kleiner als 107
{
if ( laenge >= 105) // laenge ist größer oder gleich 105
printf( "S" );
else if ( laenge > 108 ) // laenge ist größer als 108
printf( "L" );
}
else // laenge ist größer als 107
printf( "M" );Für "S": laenge ist kleiner als 107 UND laenge ist größer oder gleich 105
für "L": laenge ist kleiner als 107 UND laenge ist größer als 108
für "M": laenge ist größer als 107Also? Siehst du die Problematik?
-
und wie geht es damit weiter?
edit @jkl: Das Gegenteil von x<n ist nicht x>n, sondern x>=n
-
Nach dem Eintrag von jkljkl müsste das ja jetzt so sein:
105 S ja
106 S ja
107 M ja
108 L nein, da ein M rauskommen müsste
109 L ja
110 L ja
wobei ich mir bei 107 nicht sicher bin. da ja einmal größer und einmal kleiner als 107 angegeben wird, aber nicht gleich 107?
-
Du kannst den Code ganz einfach sich selbst testen lassen:
#include <stdio.h> int main() { int i; for (i = 90; i <= 120; ++i) { int laenge = i; printf("laenge = %d => ", laenge); if ( laenge < 107 ) // laenge ist kleiner als 107 { if ( laenge >= 105) // laenge ist größer oder gleich 105 printf( "S" ); else if ( laenge > 108 ) // laenge ist größer als 108 printf( "L" ); } else // laenge ist größer oder gleich 107 printf( "M" ); printf("\n"); } return 0; }
Das liefert dir für 90 bis 120 entweder S, L, M oder eben nichts:
laenge = 90 =>
laenge = 91 =>
laenge = 92 =>
laenge = 93 =>
laenge = 94 =>
laenge = 95 =>
laenge = 96 =>
laenge = 97 =>
laenge = 98 =>
laenge = 99 =>
laenge = 100 =>
laenge = 101 =>
laenge = 102 =>
laenge = 103 =>
laenge = 104 =>
laenge = 105 => S
laenge = 106 => S
laenge = 107 => M
laenge = 108 => M
laenge = 109 => M
laenge = 110 => M
laenge = 111 => M
laenge = 112 => M
laenge = 113 => M
laenge = 114 => M
laenge = 115 => M
laenge = 116 => M
laenge = 117 => M
laenge = 118 => M
laenge = 119 => M
laenge = 120 => M