/* * This header file contains some functions used in phy351 C++ programs * To compile and run the programs successfully you need a Tempate aware * compiler (such as Gnu(FREE), Borland, Microsoft, Watchcom etc...) */ #ifndef __LIB351_T__ #define __LIB351_T__ #ifndef __IOSTREAM_H #include //for C++ style input and output #endif #ifndef __MATH_H #include //math functions and constants #endif #ifndef __FSTREAM_H #include //for C++ style file I/O #endif #include //STL string class #include //manipulator class //_____________________________________________________________________ //--------------------------------------------------------------------- // FUNCTIONS //--------------------------------------------------------------------- int pseudoRandomInt (int upperN, int *X){ int generatedInt; *X *= 899; *X -= 32768 * int(floor(*X/32768)); generatedInt = int(float(*X) / 32768 * upperN + 1); return(generatedInt); } //--------------------------------------------------------------------- float pseudoRandomFloat ( int *X){ float generatedFloat; const int MAX = 32767; generatedFloat = float( pseudoRandomInt(MAX, X) / MAX); return(generatedFloat); } //--------------------------------------------------------------------- float deg2rad ( float degrees ){ float radians; radians = degrees * 3.1415926536 / 180; return (radians); } //--------------------------------------------------------------------- template void makeZeros ( int dimension, T *arrayName){ for (int i = 0; i < dimension; i++){ arrayName[i] = 0; } } //--------------------------------------------------------------------- void line (int length, char simbol){ for (int i = 0; i < length; i++) cout< void lineOutput (int length, T simbol, ofstream* outStr){ for (int i = 0; i < length; i++) *outStr< void d2ArrayOutput( int maxX, int maxY, T **d2ArrayName, ofstream* outStr){ for (int i = 0; i < maxX ; i++){ for (int j = 0; j < maxY; j++){ *outStr< void d2bArrayOutput( int maxX, int maxY, T **d2ArrayName, ofstream* outStr){ for (int i = 0; i < maxX ; i++){ for (int j = 0; j < maxY; j++){ *outStr< void d2aArrayOutput( int maxX, int maxY, T **d2ArrayName, ofstream* outStr){ for (int i = 0; i < maxX ; i++){ for (int j = 0; j < maxY; j++){ *outStr< void d1ArrayOutput( int maxX, T *d1ArrayName, ofstream* outStr){ for (int i = 0; i < maxX ; i++){ *outStr<>answer; cout< open(dataFileName); if (! inputStream){ cerr<<"Error reading parameter file. No such file."<>dataFileName; } else{ goout = 1; } } } //--------------------------------------------------------------------- template void readANumber(T *number, ifstream* inputStream){ char inputCommentLine[400]; while (inputStream -> peek() == '#' ){ inputStream -> getline(inputCommentLine, 400); } *inputStream>>*number; inputStream -> getline(inputCommentLine, 400); } //--------------------------------------------------------------------- template void readArray(T *arr, int max, ifstream* inputStream){ char inputCommentLine[400]; while (inputStream -> peek() == '#' ){ inputStream -> getline(inputCommentLine, 400); } for(int i = 0; i < max; i++){ *inputStream>>*(arr + i); } inputStream -> getline(inputCommentLine, 400); } //--------------------------------------------------------------------- // OUTPUT_FILE //--------------------------------------------------------------------- void outFileMaker( char outFileName[80], ofstream* outStream ){ int goout = 0; while (!goout){ outStream -> open(outFileName); if (! outStream){ cerr<<"Cannot open your file for output"< open(outFileName); } //--------------------------------------------------------------------- void writeALine (int length, char simbol, ofstream* outStream ){ for (int i = 0; i < length; i++){ *outStream<