Cátedra de Informática II – Escuela de Ingeniería Electrónica Examen Integrador 2011 Apellido y nombre: Legajo ________________________________________________________________________________________________ 1. Escribir una función concat_array() que concatene dos arreglos de punteros a caracteres, a1 y a2. La función debe devolver un puntero al arreglo concatenado. 2. Explique que produce la función crypt(): 3. ¿Para que sirve una clase en un programa C++? 4. Suponga dos clases A y B donde B deriva de A. Indique verdadero o falso: string crypt(string value,string key) { string retval(value); short unsigned int klen=key.length(), vlen=value.length(); short unsigned int k = 0,v = 0; for( v; v < vlen; v++) { retval[v] = value[v] ^ key[k]; k = ( ++k < klen ? K : 0); } return retval; } Consigna Verdadero Falso Una función miembro de B NO PUEDE invocar una función miembro de A Una función miembro de B NO PUEDE invocar un constructor privado de A Una función miembro de A NO PUEDE acceder a los campos protected de B Una función miembro de B NO PUEDE invocar al destructor de A 5. Usando sólo punteros escribir una función swap_buffers() que dadas dos direcciones de memoria y una longitud intercambie los contenidos. 6. Analice la siguiente función. Explique que hace y si tiene errores, corríjalos. int file_lines(infi) { ofstream input_file(infi); char c; int count = 0; while(input_file.getline(c)) if(c == '\n') count++; return count-1; } 7. Dado un archivo de datos llamado “base.dat”, escriba una función que lea del archivo 10 números reales y escriba a continuación el promedio de esos números conservando los datos originales. 8. Escriba una función show_data() que lee datos de un archivo “mediciones.dat” y los muestre en pantalla, línea a línea. El archivo “mediciones.dat” tiene el siguiente formato: int nro_med double med char[] etiqueta char validez 9. Si nro_med es igual a -1 la línea debe omitirse. Indicar la salida exacta que produce el siguiente programa: main(){ } int n = 3; while (n >= 0) { cout << n * n << endl; --n; } cout << n << endl; while (n < 4) cout << ++n << endl; cout << n << endl; while (n >= 0) cout << (n /= 2) << endl; return 0; 10. Explique las características de los constructores y su importancia para la programación orientada a objetos en C++