.j
-
Was willst du denn eintippen? Du sollst dir einfach nur die einzelnen Code-Ausschnitte ansehen und verstehen, wann welche Bedingung erfüllt ist und in welchem Teil der if-else-Kaskade du landen würdest. Das sollte recht einfach sein, wenn man die Arbeitsweise von if() verstanden hat.
-
.j
-
Lasse den Compiler die Arbeit machen:
-
Ja, das sollst du für alle Teilaufgaben so machen - wobei bei den anderen Aufgaben natürlich andere Bedingungen erfüllt sein könnten. Entweder du findest einen Eingabewert, bei dem die Ausgabe nicht mit der Aufgabenstellung übereinstimmt oder die Werte sind alle korrekt.
(bei jeweils 6 möglichen Eingaben und maximal 3 anzuwendenden Bedingungen dürfte das eigentlich als Fleiss-Aufgabe durchgehen)
-
.j
-
-
Also: Ich hab das jetzt so gemacht:
Ich hab mir erst die erste if-Kaskade mit
/* if-Kaskade 1 */
if ( laenge <= 106 )
printf( "S" );
else if ( laenge >= 106 )
printf( "M" );
else if ( laenge >= 108 )
printf( "L" );vorgenommen.
Muss man da zu Länge <= 106, zu Länge >= 106 und zu Länge >= 108 einzeln alles nachweisen???
Also kann mir mal jemand für die erste if-kaskade das aufschreiben, wie man das auf ein Blatt schreiben sollte?
Und was bedeutet es, wenn da steht:else
printf ("S)ohne, dass hinter else noch was steht? (siehe if-Kaskade 2)
und wenn da zweimal if untereinander steht? (siehe if-Kaskade 3)?
Was meinen die mit "oder geben sie jeweils einen Wer für laenge an, bei dem das Verhalten nicht den obigen Anforderung entspricht"?
-
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?!