Almetare  1.15
Alle meine Taschenrechner - Eine C++-Bibliothek zur Entwicklung von Taschenrechnern
Util Klassenreferenz

Allgemeine Funktionen, die nicht einer speziellen Klasse zugerechnet werden koennen. Mehr ...

#include <util.h>

Öffentliche Typen

enum  Direction { LEFT, CENTER, RIGHT }
 

Öffentliche, statische Methoden

static void shiftStr (string &str, string recruit, Direction dir=RIGHT)
 Funktion verchiebt alle Zeichen des Strings str um ein Zeichen nach links oder rechts, abhaengig von dir. Mehr ...
 
static string toLower (const string &str)
 Wandelt String in Kleinbuchstaben um. Mehr ...
 
static string doubleToStr (double val, int format, int digits, int shiftNum, double forceSci=FORCE_SCI)
 Wandelt double val mit Formatierung in einen String. Mehr ...
 
static string doubleToSxgStr (double val)
 Wandelt val in einen String im Sexagesimalformat um: z.B. Mehr ...
 
static string stripTrailingOs (const string &numStr)
 Erwartet in numStr den String einer Zahl in SCI- oder FIX-Notation und entfernt endstaendige Nachkomma-Nullen der Mantisse. Mehr ...
 
static string shiftPoint (double num, int digits, int shiftNum)
 Erzeugt einen String in Exponentialschreibweise mit der Zahl, die in num uebergeben wird. Mehr ...
 
static string shiftPointEng (const string &numStr, Direction dir, int digits)
 Erwartet in numStr den String einer Zahl in Fix- oder Sci-Notation (keinen Bruch) und wandelt ihn in eine Zahl in "Engineering"-Notation, d.h., der Exponent ist ein Vielfaches von 3. Mehr ...
 
static void getMantExp (const string &numStr, double &m, int &e)
 Extrahiert aus dem String numStr die Mantisse m und den Exponenten e als double bzw. Mehr ...
 
static bool getMantExp (const string &numStr, string &mnt, string &exp)
 Extrahiert aus dem String numStr die Mantisse mnt und den Exponenten exp als Strings. Mehr ...
 
static int getEngShiftNum (int e, int eng)
 Funktion ermittelt die Anzahl der Stellen, um die das Komma einer Zahl in Folge eines Drucks auf die "ENG"- oder "ENG<"-Taste verschoben werden muss. Mehr ...
 
static string roundMantisse (string &numStr, int digits, double forceSci=FORCE_SCI)
 Funktion bringt die Mantisse der Zahl in numStr auf hoechstens digits Stellen, falls sie mehr Stellen hat. Mehr ...
 
static string formatFixNum (double num, int digits)
 Formatiert double num im fixed Format auf insgesamt digits echte Stellen (Vor- + Nachkommastellen ohne Komma) ohne abschliessende Nullen nach dem Komma. Mehr ...
 
static string formatFixNumStr (string numStr, int digits)
 Formatiert String numStr, der Gleitkommazahl im fixed Format enthaelt, auf insgesamt digits echte Stellen (Vor- + Nachkommastellen ohne Komma) ohne abschliessende Nullen nach dem Komma. Mehr ...
 
static string roundNumStr (string &numStr, int digits, bool isSci, double forceSci=FORCE_SCI)
 Rundet die Zahl in in numStr auf digits Stellen. Mehr ...
 
static string roundSxgNumStr (string &numStr, int maxLen)
 Rundet die Sexagesimal-Zahl in numStr so, dass sie die Laenge maxLen nicht ueberschreitet (ohne Vorzeichen). Mehr ...
 
static string formatSeven (string &numStr, int len, int expLen, char fillChar)
 Formatiert String numStr so, dass er genau len Zeichen lang ist, rechtsbuendig ist und der Exponent - falls vorhanden - mit Vorzeichen eine Laenge von expLen Zeichen hat. Mehr ...
 
static string formatFixNumStr (string &numStr, int digits, int digitsAfterPoint, bool isOstripped=true)
 Formatiert String numStr, der Gleitkommazahl im fixed Format enthaelt, auf digitsAfterPoint Nachkommastellen. Mehr ...
 
static string trimNumStr (string numStr, int maxLen)
 Haengt an numStr gegebenenfalls Dezimalpunkt an und bringt ihn rechtsbuendig auf maxLen Zeichen Laenge. Mehr ...
 
static string trimStr (string str, int len=15, Direction dir=LEFT, char fillChar=' ')
 Liefert String mit len Zeichen Laenge zurueck, der str an der Position dir enthaelt. Mehr ...
 
static string trimStr (int num, int len=15, Direction dir=LEFT, char fillChar=' ')
 Liefert String mit len Zeichen Laenge zurueck, der num an der Position dir enthaelt. Mehr ...
 
static string replace (const string &srcStr, const string &oldStr, const string &newStr)
 Funktion ersetzt im String srcStr jedes Vorkommen des Strings oldStr durch den String newStr und gibt das Ergebnis als Return-Wert zurueck. Mehr ...
 
static string stripLines (string str)
 Entfernt alle Kommentare (Kommentarsymbol ';') und fuehrende Leerzeichen/Tabulatoren einer Zeile aus dem String str und ersetzt alle Zeilenumbrueche durch ein Leerzeichen. Mehr ...
 
static void eraseCrs (string &str)
 Entfernt aus dem uebergebenen String alle Carriage Returns ("\r"). Mehr ...
 
static void stripLine (string &line)
 Entfernt aus dem uebergebenen String fuehrende Leer- und Tabulatorzeichen, abschliessende Leerzeichen und Kommentare, die durch ein Kommentarzeichen (';') abgetrennt sind, und ersetzt mehrfache Leerzeichen durch nur eines. Mehr ...
 
static string getNextSym (string &expr)
 Holt aus dem String expr das erste Symbol. Mehr ...
 
static double fact (double n)
 Berechnet rekursiv die Fakultaet n! der Zahl n. Mehr ...
 
static double root (double x, double y)
 Berechnet x^(1/y). Mehr ...
 

Ausführliche Beschreibung

Allgemeine Funktionen, die nicht einer speziellen Klasse zugerechnet werden koennen.

Z.B. Funktionen zur Umwandlung von double in string (mit Rundung/Formatierung), Umwandeln von Strings in Grossbuchstaben u.a.

Die Klasse enthaelt keine Daten, nur statische Funktionen.

Dokumentation der Elementfunktionen

◆ doubleToStr()

string Util::doubleToStr ( double  val,
int  format,
int  digits,
int  shiftNum,
double  forceSci = FORCE_SCI 
)
static

Wandelt double val mit Formatierung in einen String.

Parameter
valder umzuwandelnde Wert
formatFormat, in das umgewandelt werden soll:
  • format = 0: Standardformat
  • format = 1: wissenschaftliches Format
  • format = 2: fixes Format
digitsAnzahl der Nachkommastellen (fix) oder der Nachkommastellen der Mantisse (sci)
shiftNumAnzahl der Stellen, um die das Komma der Mantisse einer Zahl im wissenschaftlichen Format nach rechts (>0) oder links (<0) verschoben wird.
forceSciExtra fuer den Casio fx-85v: er hat zwei Modi, wie kleine Zahlen dargestellt werden: Ab einer bestimmtem "Kleinheit" (<0.01 oder <0.0000001) wird im Standardformat zwangsweise in die SCI-Darstellung gewechselt. Diese Grenze kann man in forceSci uebergeben.
Rückgabe
Ergebnis-String

◆ doubleToSxgStr()

string Util::doubleToSxgStr ( double  val)
static

Wandelt val in einen String im Sexagesimalformat um: z.B.

60°30'20" <=> 60.505556

Parameter
valWert, der umgewandelt werden soll
Rückgabe
Ergebnis-String

◆ eraseCrs()

void Util::eraseCrs ( string &  str)
static

Entfernt aus dem uebergebenen String alle Carriage Returns ("\r").

Noetig unter Windows, da dort am Zeilenende "\r\n" steht.

Parameter
strzu strippender String

◆ fact()

double Util::fact ( double  n)
static

Berechnet rekursiv die Fakultaet n! der Zahl n.

Parameter
nEingabezahl
Rückgabe
Fakultaet der Eingabezahl

◆ formatFixNum()

string Util::formatFixNum ( double  num,
int  digits 
)
static

Formatiert double num im fixed Format auf insgesamt digits echte Stellen (Vor- + Nachkommastellen ohne Komma) ohne abschliessende Nullen nach dem Komma.

Parameter
numEingabewert
digitsmaximale Anzahl der Stellen insgesamt
Rückgabe
Ergebnis-String

◆ formatFixNumStr() [1/2]

string Util::formatFixNumStr ( string  numStr,
int  digits 
)
static

Formatiert String numStr, der Gleitkommazahl im fixed Format enthaelt, auf insgesamt digits echte Stellen (Vor- + Nachkommastellen ohne Komma) ohne abschliessende Nullen nach dem Komma.

Parameter
numStrEingabe-String
digitsmaximale Anzahl der Stellen insgesamt
Rückgabe
Ergebnis-String

◆ formatFixNumStr() [2/2]

string Util::formatFixNumStr ( string &  numStr,
int  digits,
int  digitsAfterPoint,
bool  isOstripped = true 
)
static

Formatiert String numStr, der Gleitkommazahl im fixed Format enthaelt, auf digitsAfterPoint Nachkommastellen.

Wenn die Gesamtzahl der Stellen dann aber digits ueberschreitet, wird auf digits Stellen insgesamt formatiert (Vor- + Nachkommastellen ohne Komma). Wenn isOstripped true, werden abschliessende Nullen nach dem Komma entfernt.

Parameter
numStrEingabe-String
digitsmaximale Anzahl der Stellen insgesamt
digitsAfterPointAnzahl der Stellen nach dem Komma
isOstrippedwenn true, werden endstaendige Nullen nach dem Komma entfernt
Rückgabe
Ergebnis-String

◆ formatSeven()

string Util::formatSeven ( string &  numStr,
int  len,
int  expLen,
char  fillChar 
)
static

Formatiert String numStr so, dass er genau len Zeichen lang ist, rechtsbuendig ist und der Exponent - falls vorhanden - mit Vorzeichen eine Laenge von expLen Zeichen hat.

Leerstellen werden mit dem Fuellzeichen fillChar gefuellt.

Parameter
numStrEingabe-String
lendiese Laenge soll der Ergebnis-String haben
expLendiese Laenge soll der Ergebnis-Exponent haben
fillCharZeichen mit dem der Ergebnis-String aufgefuellt wird, wenn er kuerzer als len ist
Rückgabe
Ergebnis-String

◆ getEngShiftNum()

int Util::getEngShiftNum ( int  e,
int  eng 
)
static

Funktion ermittelt die Anzahl der Stellen, um die das Komma einer Zahl in Folge eines Drucks auf die "ENG"- oder "ENG<"-Taste verschoben werden muss.

Parameter
eExponent einer Zahl
engAnzahl der Drücke auf "ENG"- oder "ENG<"-Taste
Rückgabe
Anzahl der Stellen, um die das Komma verschoben werden muss

◆ getMantExp() [1/2]

void Util::getMantExp ( const string &  numStr,
double &  m,
int &  e 
)
static

Extrahiert aus dem String numStr die Mantisse m und den Exponenten e als double bzw.

int.

Parameter
numStrder String, aus dem Mantisse und Exponent extrahiert werden sollen
Rückgabewerte
mMantisse als double
eExponent als double

◆ getMantExp() [2/2]

bool Util::getMantExp ( const string &  numStr,
string &  mnt,
string &  exp 
)
static

Extrahiert aus dem String numStr die Mantisse mnt und den Exponenten exp als Strings.

Wenn ein Exponent vorhanden ist, wird true zurueckgegeben. Beispiele:

- "2.345e+002" => mnt = "2.345" , exp = "+002"
- "3.4567" => mnt = "3.4567" , exp = ""
- "123.45000" => mnt = "123.45000", exp = ""
- "-23.400e-032" => mnt = "-23.400" , exp = "-032"
Parameter
numStrder String, aus dem Mantisse und Exponent extrahiert werden sollen
Rückgabewerte
mntString mit der Mantisse
expString mit dem Exponenten
Rückgabe
true, wenn numStr tatsaechlich in Sci-Notation ist, sonst false

◆ getNextSym()

string Util::getNextSym ( string &  expr)
static

Holt aus dem String expr das erste Symbol.

Parameter
exprString mit einer ganzen Tastenfolge (z.B. "3.4 * 3 sin ="
Rückgabe
String mit dem ersten Symbol

◆ replace()

string Util::replace ( const string &  srcStr,
const string &  oldStr,
const string &  newStr 
)
static

Funktion ersetzt im String srcStr jedes Vorkommen des Strings oldStr durch den String newStr und gibt das Ergebnis als Return-Wert zurueck.

Parameter
srcStrString in dem gesucht wird
oldStrTeilstring, nach dem in srcStr gesucht wird
newStrString, durch den jedes Vorkommen von oldStr ersetzt wird

◆ root()

double Util::root ( double  x,
double  y 
)
static

Berechnet x^(1/y).

Als Besonderheit sind auch die Wurzeln negativer Radikanden erlaubt, sofern y ganzzahlig und ungerade.

Parameter
xRadikand
yWurzelexponent
Rückgabe
Wurzel

◆ roundMantisse()

string Util::roundMantisse ( string &  numStr,
int  digits,
double  forceSci = FORCE_SCI 
)
static

Funktion bringt die Mantisse der Zahl in numStr auf hoechstens digits Stellen, falls sie mehr Stellen hat.

Die Zahl in numStr liegt eigentlich bereits in der gewuenschten Form (SCI, FIX, shiftNum, Anzahl Stellen, Anzahl Stellen der Mantisse) vor und wird in der Regel unveraendert wieder zurueckgegeben. Es kann aber sein, dass die Zahl (bzw. die Mantisse) zu viele Stellen hat, um noch in der Anzeige dargestellt werden zu koennen. Dann muss die Zahl (bzw. nur die Mantisse) auf die passende Stellenanzahl neu gerundet werden. Dabei kann es auch passieren, dass von FIX- in SCI-Notation gewechselt werden muss. In diesem Fall veraendert sich aber die Bedeutung von digits! Denn die Mantisse darf dann natuerlich nur die Zahl von Stellen abzueglich der Stellen fuer den Exponenten haben. Ein Vorzeichen zaehlt bei der Stellenanzahl nicht mit. Ein besonderer Fall besteht auch, wenn die Zahl mit einer Anzahl von Nullen beginnt (z.B. 0.00012345678); entweder wird dann in die SCI-Notation gewechselt (wenn die Zahl kleiner als forceSci ist), oder die Zahl der Stellen muss um die Zahl der fuehrenden Nullen reduziert werden, um den ganzen String noch unterzubringen. Wenn die resultierende Stellenzahl kleiner wird als eins, wird ebenfalls in SCI-Notation gewechselt.

Parameter
numStrEingabe-String
digitsAnzahl der Nachkommastellen (fix) oder der Nachkommastellen der Mantisse (sci)
forceSciwenn die Zahl kleiner als forceSci ist, wird sie garantiert in SCI-Notation zurueckgegeben
Rückgabe
Ergebnis-String

◆ roundNumStr()

string Util::roundNumStr ( string &  numStr,
int  digits,
bool  isSci,
double  forceSci = FORCE_SCI 
)
static

Rundet die Zahl in in numStr auf digits Stellen.

Die Zahl kann dabei sowohl in FIX- als auch in SCI-Notation gegeben sein. Wenn isSci true ist, wird die Zahl auf jeden Fall in SCI-Notation zurueckgeliefert; wenn isSci false ist, wird zusaetzlich forceSci ausgewertet: Die Zahl wird in FIX-Notation zurueckgegeben, wenn sie groesser oder gleich forceSci ist, sonst als SCI. kleiner als forceSci ist.

Parameter
numStrEingabe-String
digitsAnzahl der Nachkommastellen (fix) oder der Nachkommastellen der Mantisse (sci)
isSciwenn true, wird die Zahl garantiert in SCI-Notation zurueckgegeben
forceSciwenn die Zahl kleiner als forceSci ist, wird sie garantiert in SCI-Notation zurueckgegeben
Rückgabe
Ergebnis-String

◆ roundSxgNumStr()

string Util::roundSxgNumStr ( string &  numStr,
int  maxLen 
)
static

Rundet die Sexagesimal-Zahl in numStr so, dass sie die Laenge maxLen nicht ueberschreitet (ohne Vorzeichen).

Format der Sexagesimalzahl: 12°34'56.78 (Grad, Minuten, Sekunden). Die Stellenanzahl der Minuten kann 2 nicht ueberschreiten, die Anzahl der Vorkommastellen der Sekunden ebenfalls nicht.

Parameter
numStrEingabe-String
maxLenmaximale Laenge des Ergebnis-Strings
Rückgabe
Ergebnis-String

◆ shiftPoint()

string Util::shiftPoint ( double  num,
int  digits,
int  shiftNum 
)
static

Erzeugt einen String in Exponentialschreibweise mit der Zahl, die in num uebergeben wird.

Parameter
numdie Zahl, deren Komma verschoben werden soll
digitsAnzahl der Nachkommastellen (fix) oder der Nachkommastellen der Mantisse (sci)
shiftNumAnzahl der Stellen, um die das Komma der Mantisse einer Zahl im wissenschaftlichen Format nach rechts (>0) oder links(<0) verschoben wird.
Rückgabe
Ergebnis-String

◆ shiftPointEng()

string Util::shiftPointEng ( const string &  numStr,
Direction  dir,
int  digits 
)
static

Erwartet in numStr den String einer Zahl in Fix- oder Sci-Notation (keinen Bruch) und wandelt ihn in eine Zahl in "Engineering"-Notation, d.h., der Exponent ist ein Vielfaches von 3.

Je nach dir wird das Komma der Mantisse dabei nach rechts oder links verschoben. Gesteuert wird das Ganze durch den statischen Zaehler eng, der zunaechst 0 sein muss. Jeder Druck auf ENG inkrementiert ihn, jeder Druck auf ENG< dekrementiert ihn, die 0 selbst wird immer uebersprungen. Problematisch ist, dass je nach dem, wie die Zahl im "Urzustand" aussieht, verschieden verfahren werden muss (in Klammern: eng, shiftNum):

Urzustand 1. ENG 2. ENG 1. ENG< 2. ENG<
3.1 3.1+00 (1,0) 3100-03 (2,3) 3.1+00 ( 1, 0) 0.0031+03 (-2,-3)
3.1 3.1+00 (-1, 0) 0.0031+03 (-2,-3)
3.1-01 310-03 (1,2) 310000-06 (2,5) 310-03 ( 1, 2) 0.31+00 ( 0,-1)
3.1-01 0.31+00 (-1,-1) 0.00031+03 (-2,-4)
Parameter
numStrEingabe-String
dirRichtung, in die das Komma verschoben werden soll (Util::LEFT oder Util::RIGHT)
digitsAnzahl der Nachkommastellen (fix) oder der Nachkommastellen der Mantisse (sci)
Rückgabe
Ergebnis-String

◆ shiftStr()

void Util::shiftStr ( string &  str,
string  recruit,
Direction  dir = RIGHT 
)
static

Funktion verchiebt alle Zeichen des Strings str um ein Zeichen nach links oder rechts, abhaengig von dir.

Dabei muss ein neues Zeichen recruit von der entsprechenden Seite nachruecken. Wenn das Zeichen "" ist, wird das auf der anderen Seite herausfallende Zeichen als Nachruecker verwendet.

Rückgabewerte
strzu bearbeitender String, gleichzeitig Ergebnis-String
Parameter
recruitnachrueckendes Zeichen
dirRichtung der Verschiebung (Util::LEFT, Util::RIGHT)

◆ stripLine()

void Util::stripLine ( string &  line)
static

Entfernt aus dem uebergebenen String fuehrende Leer- und Tabulatorzeichen, abschliessende Leerzeichen und Kommentare, die durch ein Kommentarzeichen (';') abgetrennt sind, und ersetzt mehrfache Leerzeichen durch nur eines.

Parameter
linezu strippender String

◆ stripLines()

string Util::stripLines ( string  str)
static

Entfernt alle Kommentare (Kommentarsymbol ';') und fuehrende Leerzeichen/Tabulatoren einer Zeile aus dem String str und ersetzt alle Zeilenumbrueche durch ein Leerzeichen.

Vom String wird angenommen, dass er aus mehreren Zeilen besteht, die durch '
' voneinander getrennt sind. Die Funktion wird benoetigt, um die Programme des Casio fx-3600P von allen Kommentaren zu befreien und so aufzubereiten, dass das Programm ausgefuehrt werden kann.

Parameter
strzu behandelnder String
Rückgabe
der gestrippte String

◆ stripTrailingOs()

string Util::stripTrailingOs ( const string &  numStr)
static

Erwartet in numStr den String einer Zahl in SCI- oder FIX-Notation und entfernt endstaendige Nachkomma-Nullen der Mantisse.

Parameter
numStrString mit der Zahl, deren Nullen entfernt werden sollen
Rückgabe
Ergebnis-String

◆ toLower()

string Util::toLower ( const string &  str)
static

Wandelt String in Kleinbuchstaben um.

Parameter
strString, der umgewandelt werden soll
Rückgabe
umgewandelter String

◆ trimNumStr()

string Util::trimNumStr ( string  numStr,
int  maxLen 
)
static

Haengt an numStr gegebenenfalls Dezimalpunkt an und bringt ihn rechtsbuendig auf maxLen Zeichen Laenge.

Beispiele mit maxLen = 10:

"123" 3 => " 123."
"0.12345678" 10 => "0.12345678"
"-0.12345678" 11 => "-.12345678"
"-12345678" 9 => "-12345678."
"-12.345678" 10 => "-12.345678"
"-0.123" 6 => " -0.123"
"-1.2345-12" 10 => "-1.2345-12"
Parameter
numStrEingabe-String
maxLenLaenge des Ergebnis-Strings
Rückgabe
Ergebnis-String

◆ trimStr() [1/2]

string Util::trimStr ( string  str,
int  len = 15,
Direction  dir = LEFT,
char  fillChar = ' ' 
)
static

Liefert String mit len Zeichen Laenge zurueck, der str an der Position dir enthaelt.

Leerzeichen werden mit fillChar aufgefuellt.

Parameter
strzu trimmender String
lenLaenge des Ergebnisstrings
dirPosition des Strings im Ergebnis-String: Util::LEFT, Util::CENTER, Util::RIGHT
fillCharZeichen, mit dem aufgefuellt wird
Rückgabe
Ergebnis-String

◆ trimStr() [2/2]

string Util::trimStr ( int  num,
int  len = 15,
Direction  dir = LEFT,
char  fillChar = ' ' 
)
static

Liefert String mit len Zeichen Laenge zurueck, der num an der Position dir enthaelt.

Leerzeichen werden mit fillChar aufgefuellt.

Parameter
numzu trimmende Zahl (int)
lenLaenge des Ergebnisstrings
dirPosition der Zahl im String: Util::LEFT, CENTER, RIGHT
fillCharZeichen, mit dem aufgefuellt wird
Rückgabe
Ergebnis-String

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: