VF_cprint | VD_cprint | VE_cprint |
VCF_cprint | VCD_cprint | VCE_cprint |
VPF_cprint | VPD_cprint | VPE_cprint |
VI_cprint | VBI_cprint | VSI_cprint | VLI_cprint | VQI_cprint |
VU_cprint | VUB_cprint | VUS_cprint | VUL_cprint | VUI_cprint |
|
Funktion | einen Vektor auf dem Bildschirm ausgeben. Nur für Konsolenanwendungen. |
|
Syntax C/C++ | #include <VFstd.h>
void VF_cprint( fVector X, ui size, unsigned nperline ); |
C++ VecObj | #include <OptiVec.h>
void vector<T>::cprint( unsigned nperline ); |
Pascal/Delphi | uses VFstd;
procedure VF_cprint( X:fVector; size:UIntSize; nperline:UInt ); |
|
CUDA-Funktion C/C++ | #include <cudaVFstd.h>
int cudaVF_cprint( fVector d_X, ui size, unsigned nperline );
int cudaVF_cprint_buf( fVector d_X, ui size, unsigned nperline, fVector h_Wk );
|
CUDA-Funktion Pascal/Delphi | uses VFstd;
function cudaVF_cprint( d_X:fVector; size:UIntSize; nperline:UInt ): IntBool;
function cudaVF_cprint_buf( d_X:fVector; size:UIntSize; nperline:UInt; h_Wk:fVector ): IntBool;
|
|
Beschreibung | Nur Windows mit Borland / Embarcadero−Compilern oder MS Visual C++, DLL-Runtime:
size Elemente von X werden auf dem Bildschirm (der "Console"; daher das "c" im Funktionsnamen) ausgegeben.
Die Ausgabe beginnt stets mit einer neuen Zeile. Dies kann zu einer Leerzeile zu Beginn führen.
Zu Beginn jeder Zeile steht der Index des ersten in diese Zeile geschriebenen Elementes. Danach folgen ein Doppelpunkt und die verlangten nperline Elemente des Vektors X.
Cartesisch-komplexe Zahlen werden in geschweifte Klammern gefasst, wobei der Imaginärteil durch ein Komma vom Realteil getrennt wird: {Re, Im}. Polar-komplexe Zahlen werden ebenfalls in geschweifte Klammern gefaßt, wobei der Mag- vom Arg-Teil durch ein at-Zeichen getrennt wird: {Mag @ Arg}.
Die Ausgabe erfolgt in das aktuelle Textfenster unter automatischer Anpassung an die Bildschirm-Daten des aktuellen Text-Modus. Sind mehr Zeilen erforderlich als auf einer Bildschirmseite Platz finden, wird ein Seitenumbruch durchgeführt und der Benutzer vor jeder neuen Seite aufgefordert, eine beliebige Taste zu drücken.
Die Anzahl pro Element ausgegebener Stellen richtet sich nach dem zur Verfügung stehenden Platz, also nach der Zeilenlänge und dem Parameter nperline.
Diese Familie von Funktionen ist nur für Konsolenanwendungen verwendbar. |
nur CUDA-Versionen: | cudaV?_cprint_buf übernimmt einen Host-Vektor h_Wk als zusätzliches Argument. Dieser dient als Pufferspeicher und muss (mindestens) dieselbe Größe haben wie X. Hierdurch wird die interne Bereitstellung von Pufferspeicher bei cudaV?_cprint eingespart, so dass cudaV?_cprint_buf etwas schneller ist. |
Andere Windows−Compiler sowie Linux: |
Da hier die Textfenster-Breite und Höhe nicht ohne weiteres verfügbar sind, werden Aufrufe von V?_cprint nach VF_print umgeleitet.
Dieselbe Umleitung erfolgt auch für Visual C++ mit statischer Laufzeitbibliothek, hier wegen Inkompatibilitäten zwischen den verschiedenen Visual C++-Versionen. |
GCC-Windows-spezifisch: | Zwar unterstützt GCC auch in der Windows-Portierung den 80-bit-Fließkomma-Typ long double. Die I/O-Routinen verwenden aber die Laufzeitbibliothek von Visual C++, wo 80-bit-long doubles schon seit langem nicht mehr vorkommen. Dies bedeutet, dass VE_cprint, VCE_cprint und VPE_cprint bei GCC nur mit double-Genauigkeit und innerhalb des für doubles möglichen Größenbereiches arbeiten (also Eingabewerte ggf. auf diesen abgeschnitten werden). Um wenigstens eine Ausgabe im Hexadezimal-Format in voller Genauigkeit zu erhalten, rufe man VE_chexprint etc. |
|
Fehlerbehandlung | Wenn nperline die im aktuellen Text-Modus maximal mögliche Anzahl von Einträgen übersteigt, wird eine Fehlermeldung "Cannot use requested format (too many entries per line)." ausgegeben und die Ausgabe mit so vielen Einträgen pro Zeile durchgeführt wie möglich. |
|
|
|