.j
-
Du solltest dir nochmal die Grundlagen von C ansehen:
Wenn die Bedingung im if() erfüllt ist, wird die Anweisung unmittelbar dahinter ausgeführt, andernfalls die Anweisung hinter dem else - und beides können wieder weitere if-Anweisungen sein.PS: Du machst dich nicht besonders beliebt, wenn du das Board mit Kopien der selben Frage zuspammst.
-
ich verstehe das aber gar nicht
-
Noch ausführlicher kann (und will) ich dir die Aufgabe nicht vorkauen. Wenn du im Unterricht nicht aufgepasst hast und dann nicht mal in der Lage bist, dein Buch zu lesen, ist dir nicht mehr zu helfen.
-
Juli84 schrieb:
ich kriege ja keine antworten. entschuldigung, wenn ich das nicht verstehe!!!
Anstatt immer neue Threads zu spammen, würde schon ein einfaches "ich brauche immer noch Hilfe" im alten Thread reichen. Das bekommt sonst schnell einen hohen Troll-Faktor. Zudem wären beim Posten von Code Code-Tags ganz hilfreich. zB:
Juli84 schrieb:
/* if-Kaskade 1 */ if ( laenge <= 106 ) printf( "S" ); else if ( laenge >= 106 ) printf( "M" ); else if ( laenge >= 108 ) printf( "L" ); /* if-Kaskade 3 */ if ( laenge < 107 ) if ( laenge >= 105) printf( "S" ); else if ( laenge > 108 ) printf( "L" ); else printf( "M" ); /* if-Kaskade 2 */ if ( laenge > 108 ) printf( "L" ); else if ( laenge > 106 ) printf( "M" ); else printf( "S" ); /* if-Kaskade 4 */ if ( laenge <= 106 ) printf( "S" ); else if ( laenge >= 109 ) printf( "L" ); else if ( laenge >= 106 ) printf( "M" );
Wenn du dann noch etwas weniger Ausrufezeichen machst, steigt auch die Hilfsbereitschaft.
Zudem: Was gibt es da nicht zu verstehen? Ich gehe einfach mal davon aus, dass du keine Ahnung von C hast, sonst hättest du es schon gelöst. Ganz einfache Erklärung: Wenn die Bedingung erfüllt ist, wird die Anweisung direkt nach if() ausgeführt. Also alles bis zum ersten Semikolon nach if(). Wenn die Bedingung nicht erfüllt ist, wird das was nach else steht ausgeführt. else if setzt sich nur daraus zusammen. Wo ist das Problem
-
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...