3 variablen kleinste zahl



  • War doch nur ein gag 😃
    (Wieso wusste ich, dass das debattiert wird, ich habe ja auch das "sinnlos" hingewiesen, sry das nächste mal drücke ich mich deutlicher aus, FALLS es noch mal zu einem Witz kommen solllltteee 🤡 )



  • min(min(a, b), c)) hab des ganze mal mit so probiert:

    minn=min(min(min(a, b), c),d));

    wobei minn die kleinste zahl ist

    des klappt aber irgendwie nich woran kann des liegen?

    danke schon ma im vorraus 🙂



  • alex_xD schrieb:

    des klappt aber irgendwie nich woran kann des liegen?

    http://www.c-plusplus.net/forum/200753 : Stell deine Fragen präzise. Halte dich aber auch nicht zu kurz, denn ein "funktioniert nicht" wird hier meist mit Hinweisen auf die defekte Glaskugel geahndet - wir sind alle keine Wahrsager.

    minn=min(min(min(a, b), c),d));
    

    Meine Kristallkugel sagt mir, du hast eine rechte Klammer zu viel.



  • Nur so als Gag: die STL auf meinem Rechner enthält folgende (interne) Funktion:

    /**
       *  @brief Find the median of three values using a predicate for comparison.
       *  @param  a     A value.
       *  @param  b     A value.
       *  @param  c     A value.
       *  @param  comp  A binary predicate.
       *  @return One of @p a, @p b or @p c.
       *
       *  If @c {l,m,n} is some convolution of @p {a,b,c} such that @p comp(l,m)
       *  and @p comp(m,n) are both true then the value returned will be @c m.
       *  This is an SGI extension.
       *  @ingroup SGIextensions
      */
      template<typename _Tp, typename _Compare>
        inline const _Tp&
        __median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp)
        {
          // concept requirements
          __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool,
    				                         _Tp, _Tp>)
          if (__comp(__a, __b))
    	if (__comp(__b, __c))
    	  return __b;
    	else if (__comp(__a, __c))
    	  return __c;
    	else
    	  return __a;
          else if (__comp(__a, __c))
    	return __a;
          else if (__comp(__b, __c))
    	return __c;
          else
    	return __b;
        }
    


  • Wahrsager schrieb:

    alex_xD schrieb:

    des klappt aber irgendwie nich woran kann des liegen?

    http://www.c-plusplus.net/forum/200753 : Stell deine Fragen präzise. Halte dich aber auch nicht zu kurz, denn ein "funktioniert nicht" wird hier meist mit Hinweisen auf die defekte Glaskugel geahndet - wir sind alle keine Wahrsager.

    minn=min(min(min(a, b), c),d));
    

    Meine Kristallkugel sagt mir, du hast eine rechte Klammer zu viel.

    oh des mit der klammer stimmt ^^ aber des is es nich weil des programm wird ja ausgeführt aber er zeigt die zahl einfach nich an

    kann des sein, dass int variablen keine 0.01 erkennt?

    frage zurückgezogen (die war echt blöd) 🙂



  • int max = (a>b?(a>c?a:c):(b>c?b:c));
    

    Na?



  • Warum nicht mal eine Methode ohne ternären Operator/Branching?

    int a,b,c;
    min = (c ^ (((a ^ ((b ^ a) & -(b < a))) ^ c) & -((a ^ ((b ^ a) & -(b < a))) < c)));
    

    Oder für die Minimalsten:

    min = (c + (((a + ((b - a) & ((b - a) >> (sizeof(int) * CHAR_BIT - 1)))) - c) & (((a + ((b - a) & ((b - a) >> (sizeof(int) * CHAR_BIT - 1)))) - c) >> (sizeof(int) * CHAR_BIT - 1))));
    


  • EndlichSchnell schrieb:

    Warum nicht mal eine Methode ohne ternären Operator/Branching?

    int a,b,c;
    min = (c ^ (((a ^ ((b ^ a) & -(b < a))) ^ c) & -((a ^ ((b ^ a) & -(b < a))) < c)));
    

    Oder für die Minimalsten:

    min = (c + (((a + ((b - a) & ((b - a) >> (sizeof(int) * CHAR_BIT - 1)))) - c) & (((a + ((b - a) & ((b - a) >> (sizeof(int) * CHAR_BIT - 1)))) - c) >> (sizeof(int) * CHAR_BIT - 1))));
    

    The root of all evil.



  • Werden diese Funktionen der STL eigentlich mit Variadic Templates auf n Parameter ausgeweitet?



  • EndlichSchnell schrieb:

    ...

    Das ist nicht 100% portabel. Bit-Operationen auf negativen Zahlen sind "implementation-defined".


Anmelden zum Antworten