#include #include #include #include #include #include #include using namespace std; //este es el esqueleto de un programa para calcular derivadas primera y segunda sobre una grilla. //hay que escribir el contenido de la mayor parte de las rutinas/funciones. algunas rutinas //tienen dos definiciones porque hay principalmente dos formas de encararlas. tenes que elegir una //y borrar la otra. //------------------------------------------------------------------------------------------ double func(double x) { return sin(x); } //------------------------------------------------------------------------------------------ //esta rutina debe inicializar el vector con una función dada (que podemos modificar en "func" arriba) vector init_vector(int n, double dx) { } void init_vector(int n, double dx, vector& vin) { } //------------------------------------------------------------------------------------------ //esta rutina debe calcular la deriva primera del vector "vin" con un esquema (scheme) a eleccion //puede ser atrasado, centrado o adelantado. el orden de desarrollo puede ser el primero. vector der1(int n, double dx, int scheme, vector& vin) { } void der1(int n, double dx, int scheme, const vector& vin, vector& vout) { } //------------------------------------------------------------------------------------------ //esta rutina debe calcular la deriva segunda del vector "vin" con un esquema (scheme) a eleccion //puede ser atrasado, centrado o adelantado. el orden de desarrollo puede ser el primero vector der2(int n, double dx, int scheme, vector& vin) { } void der2(int n, double dx, int scheme, vector& vin, vector& vout) { } //------------------------------------------------------------------------------------------ //esta rutina debe mostrar el contenido del vector "vin" en pantalla void print_vector(int n, double dx, vector& vin) { } //------------------------------------------------------------------------------------------ //esta rutina debe escribir el contenido del vector "vin" en un archivo cuyo nombre está //alojado en filename void write_vector(int n, double dx, string filename, vector& vin) { } //------------------------------------------------------------------------------------------ //esta rutina no hace falta escribirla, ya funciona bien. void read_input(int& N, double& DX, int& SCHEME, int& ORD, string filename) { string tmpstr; //defino un puntero (llamado "filein") al archivo cuyo nombre está dado por la variable filename ifstream filein(filename.c_str()); //chequeo que se haya abierto bien el archivo. si no, salgo del programa con mensaje de error. if (!filein.good()) { cout << "problema al abrir " << filename << endl; exit(1); } //leo los 4 parametros del archivo. como los parametros vienen dados por referencia, estoy //modificando directamente las variables que me pasaron como parametros. van a seguir estando //modificadas cuando vuelva a main, aunque las esté modificando aca. filein >> N; filein >> DX; filein >> SCHEME; filein >> ORD; //cierro el archivo filein.close(); } //------------------------------------------------------------------------------------------ int main() { int N, SCHEME, ORD; double L, DX; //le paso a read_input las variables en las que quiero guardar los parámetros que voy a leer //del archivo "derive.inp" read_input(N, DX, SCHEME, ORD, "derive.inp"); return 0; }