Respuestas modelo
Consulta aquí las respuestas correctas y explicaciones de las autoevaluaciones y los tests del manual. Ideal para repasar antes de un test o aclarar dudas.
3.07 · Struct y Archivos
16 preguntas con respuesta en este tema.
🎯 Autoevaluación (3)
¿Qué es un struct en C++?
- A. Una función
- B. Un tipo de dato personalizado que agrupa variables relacionadas ✓ CORRECTA
- C. Un bucle
- D. Una clase idéntica
struct agrupa variables de diferentes tipos bajo un nombre. Ej: struct Persona { string nombre; int edad; };
¿Cómo accedes a un campo de un struct?
- A. Con punto (.) o flecha (->) si es puntero ✓ CORRECTA
- B. Con corchetes
- C. Con paréntesis
- D. Con dos puntos
persona.nombre accede al campo. Si `Persona* p`, entonces p->nombre.
¿Cómo se abre un archivo para escribir en C++?
- A. fopen("datos.txt", "r")
- B. ofstream f("datos.txt"); ✓ CORRECTA
- C. open("datos.txt");
- D. file f("datos.txt");
ofstream (output file stream) abre para escribir. ifstream lee. fstream puede ambas.
📝 Test · Sección A · Opción múltiple (10)
¿Qué es un struct en C++?
- A. Una función
- B. Un tipo de dato que agrupa variables ✓ CORRECTA
- C. Un bucle
- D. Una clase idéntica
struct agrupa datos heterogéneos bajo un nombre.
¿Cómo accedes a un campo de un struct?
- A. struct->campo
- B. struct.campo o p->campo si es puntero ✓ CORRECTA
- C. struct[campo]
- D. struct::campo
Persona p; p.nombre. Persona* ptr; ptr->nombre.
¿Cómo defines un struct en C++?
- A. type Persona { }
- B. struct Persona { string nombre; int edad; }; ✓ CORRECTA
- C. Persona struct { }
- D. Persona { }
struct Nombre { tipo campo; ... }; con ; al final.
¿Qué hace std::ofstream?
- A. Lee archivos
- B. Escribe/crea archivos ✓ CORRECTA
- C. Compila
- D. Borra archivos
ofstream: output file stream, para escribir.
¿Qué hace std::ifstream?
- A. Escribe
- B. Lee archivos ✓ CORRECTA
- C. Borra
- D. Crea
ifstream: input file stream, para leer.
¿Cómo abres un archivo para escribir en C++?
- A. fopen("a.txt", "r")
- B. std::ofstream f("a.txt"); ✓ CORRECTA
- C. file f("a.txt");
- D. open("a.txt");
ofstream abre para escribir (crea si no existe, sobrescribe).
¿Cómo verificas que un archivo se abrió bien?
- A. f.good()
- B. f.is_open() ✓ CORRECTA
- C. f.ok()
- D. f.alive()
is_open() devuelve true si el archivo está abierto correctamente.
¿Cómo leer línea por línea en C++?
- A. f.readLine()
- B. std::getline(f, linea) ✓ CORRECTA
- C. f.getline(linea)
- D. read(f, linea)
std::getline(istream, string) lee hasta \n.
Para leer un struct desde un archivo:
- A. readFile
- B. f.read(reinterpret_cast<char*>(&s), sizeof(s)); ✓ CORRECTA
- C. Solo strings
- D. No se puede
Read binario: read reinterpret_cast del struct como bytes.
¿Por qué usar archivos en programas?
- A. Para hacer lento
- B. Para persistir datos entre ejecuciones ✓ CORRECTA
- C. Para compilar
- D. Para debug
Archivos: los datos sobreviven al terminar el programa.
✍️ Test · Sección B · Preguntas abiertas (3)
Diseña un struct "Estudiante" con nombre, edad, promedio. Escribe un programa que lo lea de un archivo y muestre el mejor promedio.
struct Estudiante { string nombre; int edad; float promedio; }; ifstream f("alumnos.txt"); Estudiante e; Estudiante mejor; while (f >> e.nombre >> e.edad >> e.promedio) { if (e.promedio > mejor.promedio) mejor = e; } cout << mejor.nombre;
Explica la diferencia entre fopen (C) y ifstream (C++). ¿Cuándo usar cada uno?
fopen: funciones C, fread/fwrite, FILE*. ifstream: streams C++, operador >> y <<, RAII (se cierra solo). ifstream es más seguro (excepciones), más legible. fopen solo en código C existente.
¿Qué ventajas tiene leer/escribir structs completos vs campo a campo?
Completo: menos código, más rápido (una operación). Campo a campo: más flexible (puedes omitir campos, calcular sobre la marcha), compatible con archivos de texto legibles. Para binarios: completo. Para texto: campo a campo.
📝 ¿Listo para evaluarte?
Regístrate o inicia sesión para tomar la autoevaluación o el test de este tema y registrar tu puntaje.