if-else if-else



  • nabend zusammen

    kann mir jemand sagen warum beim nachfolgenden programm die zuweisung nach z1, z2, z3 nicht stimmt, ich bin der meinung das, dass so richtig ist??
    z1 soll immer mit der kleinsten zahl anfangen und dann ansteigen, also bei z3 soll dann die größte sein.

    #include<stdio.h>
    
    void main()
    
    {
    	int a,b,c;
    	int z1,z2,z3;
    
    	printf("erste Zahl =?");
    	scanf("%i",&a);
    	printf("zweite Zahl =?");
    	scanf("%i",&b);
            printf("dritte Zahl =?");
    	scanf("%i",&c);
    
    	if ((a < b) < c) 
    
    	{
    		z1 = a;
    		z2 = b;
    	    z3 = c;
    	}
    	else if (( b < a) <c)
    	{
    		z1 = b;
    		z2 = a;
    	        z3 = c;
    	}
            else if (( c < a) < b)
    	{
    		z1 = c;
    		z2 = a;
    		z3 = b;
    	}
            else if (( a < c) < b)
    	{
    		z1 = a;
    		z2 = c;
    	        z3 = b;
    	}
    
    	else if (( b < c) < a)
    	{
    		z1 = b;
    		z2 = c;
    	        z3 = a; 
    	}
    	else  
    	{
    	z1 = c;
    	z2 = b;
    	z3 = a;
    	}
    
    	printf("\n\Die Sortierung von a=%i, b=%i, c=%i",a,b,c);
    	printf("ergibt fuer dir Groessen z1=%i, z2=%i, z3=%i",z1,z2,z3);
    }
    

    <edit=ruediger>
    sfds Bitte [cpp ]-tags benutzen!
    </edit>



  • Die if-Bedingungen sind falsch. Du musst zwei getrennte Vergleiche machen: if (a < b && b < c)



  • a<b ist entweder 1 (für true/wahr) oder 0 (für false/falsch). Das heißt das <c schaut dann im Endeffekt nur ob c größer als 1 oder 0 ist.

    Wie lagalopex schon gesagt hast, musst du die Bedingung auftrennen.

    btw. solltest du int main() benutzen und nicht void! http://www.c-plusplus.net/forum/viewtopic.php?t=39346



  • besten dank, jetzt geht es 🙂



  • Struppi schrieb:

    besten dank, jetzt geht es 🙂

    Trotzdem viel zu kompliziert, geht viel einfacher.


Anmelden zum Antworten