Wie eine Zahl als "Unendlich groß" defnieren?



  • Hallo,
    ich suche mittels einer For-Schleife ein Minimum.. Daher ist es sinnvoll, den Anfangswert auf "unendlich" zu setzen. Wie geht das?

    VIELEN Dank im Voraus.

    MfG



  • Warum die Suche nicht auf den ersten Fund initialisieren? Das Minimum wird sich dann beim Durchlaufen automatisch ergeben.



  • SchwanAL schrieb:

    Hallo,
    ich suche mittels einer For-Schleife ein Minimum.. Daher ist es sinnvoll, den Anfangswert auf "unendlich" zu setzen. Wie geht das?

    VIELEN Dank im Voraus.

    MfG

    INFINITY http://www.gnu.org/s/libc/manual/html_node/Infinity-and-NaN.html
    oder
    INT_MAX http://en.wikipedia.org/wiki/Limits.h

    Aber oft ist es auch ein guter Weg, das Minimum mit dem ersten Wert zu initialisieren.



  • hab IntMax genomme, funktioniert super...

    Erster Fund wäre natürlich ideal, da ich aber nicht in jeder For-Schleife eine Abfrage drinnen haben will ob es sich um den ersten Fund handelt, müsste ich den 0.ten Durchlauf vorne ran stellen, oder gibt es da eine andere Lösung?

    Danke



  • int find_min(int *list, int len)
    {
      unsigned int i, retval = -1;
      for (i = 0; i < len; i++)
      {
        if (list[i] < retval)
        {
          retval = list[i];
          if (retval == 0)
          {
            return retval;
          }
        }
      }
      return retval;
    }
    

    Weiß nicht ob das so wirklich elegant ist, aber es funktioniert 😉



  • Du brauchst doch nur den ersten Wert aus deiner durchsuchten Menge nehmen.

    Wenn du ein Array hast dann halt den ersten Eintrag.
    Bei einer Berechnung halt irgendein (oder den ersten) Wert aus deinem Suchbereich.



  • Ich sehe da jetzt keinen Unterschied, ob du die Variable mit dem ersten Suchwert initialisierst oder mit INT_MAX... z.B.

    int arr[] = {6,5,2,3,5,6,8,2,5,7};
    	int min = arr[0];
    
    	for(int i = 0; i < sizeof(arr)/sizeof(int); i++)
    	{
    		if(arr[i] < min)
    			min = i;
    	}
    
    int arr[] = {6,5,2,3,5,6,8,2,5,7};
    	int min = INT_MAX;
    
    	for(int i = 0; i < sizeof(arr)/sizeof(int); i++)
    	{
    		if(arr[i] < min)
    			min = i;
    	}
    


  • unterschied:

    INT_MAX needs limits.h



  • Nah, so einfach isses net, spielt aber auch keine Rolle...

    Ich berechne IN der For-Schleife mein Ergebnis

    Distance_int = calc_Dist(Originalbild_Temp,Teilbild);
    

    Distance_int = Integer Variable
    calc_Dist = meine Berechnungsfunktion

    und schau dann ob das Ergebnis das Minimum entspricht...

    if(Distance_int < max_Dist)
    {
    max_Dist = Distance_int;
    max_Breite = Breite;
    max_Hoehe = Hoehe;

    }

    d.h. ich weiß vor dem ersten Schleifendurchlauf garkeine Ergebnisse...

    Aber wie gesagt, alles nicht so wichtig, dank euch 😉



  • Achso, hab noch ne Frage dazu wie ich ein zweidimensionales, variables Array definier, aber dazu fragi hc mal lieber in einem anderen Thread nach..

    Danke und Gruß



  • Du hast einfach nichts verstanden. Es ist doch scheissegal ob du einen Wert erst noch berechnen muss oder ihn aus einem Array abgreifst...


Log in to reply