int wert mit anderen vergleichen



  • hallo....
    ich schreibe gerade ein programm das einen integertypen names max erzeugt...dieser soll vom hauptprogramm 3 zahlen eingelesen bekommen und übergeben....die größte zahl soll ausgegeben werden. ende des programms...ausgabe.

    kann ich das mit einern if-else-anweisung lösen? oder wie....kann ein integer typ denn überhaupt mehrere werte besitzen......bitte um hilfe



  • #define max(a,b) (((a) > (b)) ? (a) : (b))
    ...
    big_one = max(c,max(a,b));
    ...
    

    🙂



  • Klar kannst du das - bei drei Werten allerdings mit mehreren if()s. Zum Vergleichen der Werte gibt es eine recht einfache Möglichkeit - Vergleichsoperatoren wie >, < etc (und Hilfsmakros ala "#define max(x,y) ((x)>(y)?(x):(y))").



  • CStoll schrieb:

    bei drei Werten allerdings mit mehreren if()s.

    du brauchst nur 2 ifs. mehr nicht.
    🙂



  • also hab es mit 3 zahlen versucht...klappt nicht ganz 😉
    außerdem so wie ich es geschrieben habe ist der int max total nicht zu gebrauchen weil ich ja drei unabhängige werte einlese....die aufgabe is allerdings anders gestellt

    int max,a,b,c;
    
    	printf("Bitte Wert für a eingeben: ");
    	scanf("%i", &a);
    	printf("Bitte Wert für b eingeben: ");
    	scanf("%i", &b);
    	printf("Bitte Wert für c eingeben: ");
    	scanf("%i", &c);
    
    	if(a >b,c)
    		printf("Die größte Wert lautet: ", a);
    	else if(b>a,c)
    		printf("Die größte Wert lautet: ", b);
    	else if(c>b,a)
    		printf("Die größte Wert lautet: ", c);
    


  • Tomt0m schrieb:

    if(a >b,c)
    		printf("Die größte Wert lautet: ", a);
    

    Ja, diese Bedingungen sind ja auch (technisch) Unsinn - informier dich mal, was der Komma-Operator macht. Du benötigst "if(a>b && a>c)..."

    (oder - mit dem obengenannten Makro printf("Der größte Wert lautet %d",max(a,max(b,c))); )

    PS: Noch ein kleiner Fehler - wenn du Variablen mit printf() ausgeben willst, mußt du die entsprechenden Formatkennungen %d etc in den Formatstring einfügen.



  • Tomt0m schrieb:

    [cpp]
    if(a >b,c)

    das bingt nix, ist das gleiche wie if(c) d.h. der vergleich wird nicht ausgewertet. wenn du es ohne makro machen willst z.b.:

    if (a > b)
       b = a;
    if (c > b)
       b = c;
    

    der grösste wert ist danach in b.



  • so das is was ich hab....lässt sich kompelieren aber nichts passiert beim ausführen:

    #include <stdio.h>
    
    int main()
    {
    
    	int max(int a,int b,int c)
    		{
    		int max;
    
    		printf("Bitte Wert für a eingeben: ");
            	scanf("%i", &a);
            	printf("Bitte Wert für b eingeben: ");
            	scanf("%i", &b);
            	printf("Bitte Wert für c eingeben: ");
            	scanf("%i", &c);
    
    		if(a > b && a > c)
    			max = a;
    		else if(b > a && b >c)
    			max = b;
    		else 
    			max = c;
    
    		return max;
    		}
    }
    


  • Hast du die Funktion max() tatsächlich lokal in der main()-Funktion definiert 😮 ? Wenn ja - welcher Compiler schluckt denn sowas?

    Ansonsten: Du mußt diese Funktion natürlich auch aufrufen - und ihren Rückgabewert auswerten/ausgeben.



  • das heißt genau...??? 😕
    sorry aber das programmieren ist neuland für mich



  • Tomt0m schrieb:

    #include <stdio.h>
    
    int main()
    {
    	
    
    	// int max(int a,int b,int c)
    	//	{
    		int max;
    
    		printf("Bitte Wert für a eingeben: ");
            	scanf("%i", &a);
            	printf("Bitte Wert für b eingeben: ");
            	scanf("%i", &b);
            	printf("Bitte Wert für c eingeben: ");
            	scanf("%i", &c);
    
    		if(a > b && a > c)
    			max = a;
    		else if(b > a && b >c)
    			max = b;
    		else 
    			max = c;
    
    		//return max;
    		//}
       printf ("%d\n", max);
    }
    

    🙂



  • Für einen Anfänger ist es wohl am einfachsten, du lässt das "int max(...)" weg und orientierst dich an deinem vorherigen Entwurf (abgesehen von den fehlerhaften if-Bedingungen sah der schon brauchbar aus).

    Wie man seinen Quelltext in Funktionen unterteilt, kannst du als nächstes lernen 😉



  • alles klar leute....danke für die nette hilfe 🙂 ...das programm hab ich jeze ohne max-funktion erstma gemacht ...danke.....habt ihr vll ein gutes tutorial wo man funktionen unterteilt...möchte meine fehler schließlich nicht noch ma machen... 🙂



  • Such dir am besten ein C-Tutorial (hier im Forum gibt es oben einen Link [Tutorial] mit 7 C-Tutorials).
    So lernst du am besten erst mal die Grundlagen von C. Mit Trial&Error eignest du dir nicht wirklich hilfreiches Wissen an.


Anmelden zum Antworten