Good to Know Database

C++: Signum-Funktion


Mit Hilfe einer Signum-Funktion kann man das Vorzeichen einer Zahl ermitteln. In den Standardbibliotheken von C++ gibt es allerdings keine Signum-Funktion. Daher muss man sich selber eine entsprechende Funktion schreiben. Dazu kann man zum Beispiel eine einfache If-Else-Abfrage erstellen die prüft ob eine Zahl größer, kleiner oder gleich Null ist und anschließend den gewünschten Rückgabewert zurück gibt. Der folgende C++ Code zeigt eine solche Signum-Funktion.

Erstellen Sie mit einem Editor eine neue Datei für den Quellcode.

georg@ubuntu1204:~$ vi signum.cpp

Fügen Sie hier den folgende Beispiel-Quellcode ein.

#include <iostream>
#include <stdlib.h>
using namespace std;

//define signum function
template<class T>
int signum(T val)
{
  if(val < T(0))
  {
    return T(-1);
  }
  else
  {
    return val > T(0);
  }
}

int main(int argc,char *argv[])
{
  double value;

  //check arguments
  if(argc!=2)
  {
    cerr << "Usage: signum <value>" << endl;
    return 1;
  }

  //convert specified value to double
  value = atof(argv[1]);

  //print specified value
  cout << "Value: " << value << endl;

  //print signum of specified value
  cout << "Signum: " << signum(value) << endl;

  return 0;
}

Nachdem Sie den Quellcode abgespeichert haben, können Sie diesen kompilieren.

georg@ubuntu1204:~$ g++ signum.cpp -o signum

Jetzt können Sie das Programm signum mit verschiedenen Zahlen als Argument aufrufen und erhalten die entsprechende Ausgabe.

georg@ubuntu1204:~$ ./signum 55
Value: 55
Signum: 1
georg@ubuntu1204:~$ ./signum 0
Value: 0
Signum: 0
georg@ubuntu1204:~$ ./signum -55
Value: -55
Signum: -1

Sollten Sie kein Argument angeben, wird der Benutzungshinweis angezeigt.

georg@ubuntu1204:~$ ./signum
Usage: signum <value>


Dieser Eintrag wurde am 01.03.2014 erstellt.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_38_2516.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer