.j



  • 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 ja

    106 <107 und >=105 S ja

    107 "andernfalls" M ja
    108 "andernfalls" M ja
    109 >108 L ja

    110 >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 107

    Also? 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



  • Ist denn 109 kleiner als 107?



  • hmmm äh
    sry war gerade mit meinen gedanken wo anders 😃

    für 105 und 106 kommt jeweils s raus
    und für 107 bis 110 jeweils ein m
    also sind 109 und 110 falsch -.-


Anmelden zum Antworten