Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Maximum und Minimum Funktion?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
26.08.2006, 01:16 Uhr
~testo
Gast


Hallo ich suhce vergeblich seit über einer stunde eine einfache Max und Min funktion in C++.
Ich dachte math.h hätte sowas hat es aber nicht. Kann mir jemand verraten ob es sowas schon standard mässig gibt?


Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.08.2006, 08:44 Uhr
RedEagle



ich weiß zwar nicht, was du genau suchst, aber....


C++:
int max(int *numbers, int count)
{
int highest=0;
for(int i=0; i<count; i++) if(numbers[i] > highest) highest = numbers[i];
return highest;
}


*numbers* muss ein array mit *count* elementen sein. Die höchste zahl wird zurückgegeben.
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.08.2006, 09:18 Uhr
virtual
Sexiest Bit alive
(Operator)


@RedEagle

Schon nmal überlegt, was passiert, wenn numbers nur negative Zahlen enthält?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.08.2006, 10:24 Uhr
(un)wissender
Niveauwart


Nachdenken verursacht Krebs...
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.08.2006, 10:28 Uhr
RedEagle




Zitat von virtual:
@RedEagle

Schon nmal überlegt, was passiert, wenn numbers nur negative Zahlen enthält?



C++:
unsigned int max(unsigned int *numbers, unsigned int count)
{
unsigned int highest=0;
for(int i=0; i<count; i++) if(numbers[i] > highest) highest = numbers[i];
return highest;
}


C++:
int max(int *numbers, unsigned int count)
{
int highest=-2147483647;
for(int i=0; i<count; i++) if(numbers[i] > highest) highest = numbers[i];
return highest;
}

--
MFG RedEagle

Dieser Post wurde am 26.08.2006 um 10:30 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.08.2006, 09:49 Uhr
stephanw
localhorst


@testo:

In <algorithm> gibt es std::min, std::max und std::min_element und std::max_element .

(Solltest Du vorher windows.h einbinden, können die dort vorhandenen Macros für min/max Probleme machen, dann mit #undef die Macros wegschmeißen)
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.09.2006, 21:18 Uhr
~habanero
Gast


und was, wenn die Größe eines integers auf einer Plattform nur 2 Byte beträgt?

im Standard steht nur:


Zitat von Stroustrup:

1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

Weiter: char mindestens 8Bit, short mind.16bit und long mind.32bit



kann also auch gut sein, dass int nur 2Byte belegt und so die Portabilität nicht gewährleistet ist



C++:
int max(int *numbers, unsigned int count)
{
    if (count){
        int highest=*numbers;
        for(int i=1; i<count; i++) if(numbers[i] > highest) highest = numbers[i];
        return highest;
    }
    else return 0;
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.09.2006, 10:32 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von ~habanero:

char mindestens 8Bit, short mind.16bit und long mind.32bit


Falsch! ein Byte muss nicht 8 Bit haben! Es gibt genügend Platformen die 7bit oder 15bit o.ä haben. Da ist sizeof(char)==1, hat aber nur 7Bit! Auf ia32 und ia64 stimmt das mit 8bit. Ansonsten kannste nicht von der size auf die Bitgröße abzielen. das mit 8Bit hat sich nur für Desktop-Systeme so eingebürgert, ist aber nicht zwingend.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.09.2006, 11:55 Uhr
Tron



Moin,

für Integer gibt es die Konstanten INT_MIN und INT_MAX definiert in limits.h.
für Fließkommawerte sind diese entsprechend in float.h definiert.

Dann gibt es noch die Datei limits (ohne .h suffix) diese stellt eine Schablone bereit.

z.B.:


C++:
cout<<"T Min ist "
      <<numeric_limits_<T>::min()
      <<" bis "
      <<numeric_limits_<T>::max()
      <<endl;


T steht dabei für den jeweilgen Datentyp.

Gruss Tron


Bearbeitung von windalf:

Tags fixed..


Dieser Post wurde am 03.09.2006 um 13:06 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
03.09.2006, 14:08 Uhr
stephanw
localhorst



Zitat von FloSoft:

Falsch! ein Byte muss nicht 8 Bit haben! Es gibt genügend Platformen die 7bit oder 15bit o.ä haben. Da ist sizeof(char)==1, hat aber nur 7Bit! Auf ia32 und ia64 stimmt das mit 8bit. Ansonsten kannste nicht von der size auf die Bitgröße abzielen. das mit 8Bit hat sich nur für Desktop-Systeme so eingebürgert, ist aber nicht zwingend.


Das was habanero bezüglich der Größen von Datentypen schreibt, kenne ich auch so vom Stroustrup-Buch, was ich mal als gleichwertige Referenz zum C++-Standard betrachte. Wenn es Systeme gibt, auf denen ein Zeichen nur 7 Bit lang ist (gibt es so etwas ?), muss ein C++-Compiler auf diesem System sich mächtig verbiegen, um sich so nennen zu dürfen.

Ansonsten verstehe ich grade nicht, wass die Größen von Datentypen mit dem Minimum/Maximum einer Menge von Zahlen zu tun hat
--
Reden ist Schweigen und Silber ist Gold.

Dieser Post wurde am 03.09.2006 um 14:11 Uhr von stephanw editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: