Sgn Funktion



  • hm was mach ich hier nur falsch? hab viel herumprobiert aber es will einfach nicht klappen aber ma muss dran bleiben könnte noch einen tip gebrauchen wie ich des schreiben soll

    #include <stdio.h>
    
    float sgn(float val)
    {
        if (x<0)
    	{
    		printf("-1"\n);
    	}
    	else if (x>0)
    	{
    		printf("1"\n);
    	}
    	else (x=0)
    	{
    		printf("0"\n);
    	}
    
    	return 0;
    
    }
    
    int main(void)
    {
        float zahl1 , zahl2, zahl3;
    
        zahl1 = -123;
        zahl2 = 123;
        zahl3 = 0;
    
        printf("%f\n", sgn(zahl1));
        printf("%f\n", sgn(zahl2));
        printf("%f\n", sgn(zahl3));
    
        return (0);
    }
    


  • printf("-1\n"); <= \n muss unter die Anführungsstriche.

    else (x=0) <= Nach else kommt keine Bedingung. Und x=0 ist eine Zuweisung und ist immer wahr. Richtig wäre x==0 (aber eben nicht nach else)



  • das x muss auch noch durch val ersetzt werden.



  • printf("%f\n", sgn(zahl1)); gibt übrigens immer 0 raus, weil sgn zu jeder zeit den rückgabewert 0 hat.



  • hey vielen dank jetzt sehe ich das ganze programm schon klarer das mit dem \n das hab ich auch bemerkt danke noch mal wirklich nett



  • Couterfly schrieb:

    hey vielen dank jetzt sehe ich das ganze programm schon klarer das mit dem \n das hab ich auch bemerkt danke noch mal wirklich nett

    just as test using off-by-one web browser!



  • ... tip gebrauchen ...

    Korrekte Interpunktion und Rechtschreibung ...



  • Couterfly schrieb:

    #include <stdio.h>
    
    float sgn(float val)
    {
        if (x<0)
    	{
    		printf("-1"\n);
    	}
    	else if (x>0)
    	{
    		printf("1"\n);
    	}
    	else (x=0)
    	{
    		printf("0"\n);
    	}
    
    	return 0;
    
    }
    

    Wenn das die signum-Funktion sein soll, dann sollte sie die Werte -1, 0 oder 1 zurückgeben, nicht auf die Standardausgabe schreiben.

    float sgn(float x)
    {
      if (x < 0)
        return -1;
      else if (x > 0)
        return 1;
      else
        return 0;
    }
    

Anmelden zum Antworten