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.01 · Arreglos Unidimensionales (Vectores)
16 preguntas con respuesta en este tema.
🎯 Autoevaluación (3)
¿Cómo se declara un arreglo de 10 enteros en C++?
- A. int arr[10]; ✓ CORRECTA
- B. int arr(10);
- C. array<int> arr;
- D. int arr = 10;
int arr[10] reserva espacio para 10 enteros con índices 0-9.
¿Cuál es el índice del primer elemento de un arreglo en C++?
- A. 1
- B. 0 ✓ CORRECTA
- C. -1
- D. Depende
En C/C++/Java/JS los arreglos empiezan en índice 0. arr[0] es el primer elemento.
¿Cómo accedes al tercer elemento de un arreglo `arr`?
- A. arr[3]
- B. arr[2] ✓ CORRECTA
- C. arr(3)
- D. arr->3
Tercer elemento = índice 2 (porque 0=primero, 1=segundo, 2=tercero).
📝 Test · Sección A · Opción múltiple (10)
¿Cómo se declara un arreglo de 10 enteros en C++?
- A. int arr(10);
- B. int arr[10]; ✓ CORRECTA
- C. array<int> arr;
- D. int arr = 10;
int arr[10]; reserva 10 enteros con índices 0-9.
¿Cuál es el primer índice de un arreglo en C++?
- A. 1
- B. 0 ✓ CORRECTA
- C. -1
- D. Depende
C/C++/Java/JS: índices desde 0. arr[0] es el primero.
Para acceder al 5to elemento de arr:
- A. arr[5]
- B. arr[4] ✓ CORRECTA
- C. arr(5)
- D. arr->5
5to = índice 4 (porque 0=1°, 1=2°, 2=3°, 3=4°, 4=5°).
¿Qué pasa si accedes a arr[10] en un arreglo de tamaño 10?
- A. Devuelve 0
- B. Comportamiento indefinido (puede crashear) ✓ CORRECTA
- C. Error de compilación
- D. Devuelve null
Acceso fuera de límites: undefined behavior. En debug, suele abortar.
¿Cómo se inicializa un arreglo en C++?
- A. int arr[5] = {1,2,3,4,5}; ✓ CORRECTA
- B. int arr = [1,2,3,4,5];
- C. int arr(5) = 1,2,3;
- D. Solo en tiempo de compilación
Inicialización con llaves: int arr[] = {1,2,3}; o tamaño fijo.
¿Qué pasa con elementos no inicializados en un arreglo global?
- A. Son null
- B. Son 0 ✓ CORRECTA
- C. Son aleatorios
- D. Causan error
Globales y static se inicializan a 0. Locales tienen valor indefinido.
Un arreglo de 5 doubles ocupa:
- A. 5 bytes
- B. 40 bytes ✓ CORRECTA
- C. 20 bytes
- D. 10 bytes
double = 8 bytes. 5 * 8 = 40 bytes.
¿Cómo se recorre un arreglo en C++?
- A. for (auto x : arr)
- B. for (int i=0; i<n; i++)
- C. while
- D. Todas las anteriores ✓ CORRECTA
C++ moderno: range-based for. Clásico: for con índice.
¿Cuál es la diferencia entre un arreglo y un vector?
- A. Son iguales
- B. Vector es dinámico, arreglo es tamaño fijo ✓ CORRECTA
- C. Vector es más lento siempre
- D. Arreglo tiene métodos
std::vector crece dinámicamente. Arreglo: tamaño fijo en compilación.
¿Cómo se pasa un arreglo a una función en C++?
- A. Por valor (copia completa)
- B. Por puntero o por referencia (evita copia) ✓ CORRECTA
- C. No se puede
- D. Por valor es lo único
Por defecto decae a puntero. Para preservar tamaño: pasar tamaño adicional.
✍️ Test · Sección B · Preguntas abiertas (3)
Diseña una función en pseudocódigo que encuentre el máximo de un arreglo. ¿Complejidad?
int max = arr[0]; for (int i=1; i<n; i++) if (arr[i] > max) max = arr[i]; return max;. Complejidad: O(n) lineal.
Explica la diferencia entre pasar un arreglo por valor y por puntero a una función. ¿Por qué es importante?
Por valor: copia el arreglo completo (caro para n grande). Por puntero: solo pasa la dirección (O(1)), la función accede a la memoria original. Por defecto en C++: decae a puntero. Importante: eficiencia y evitar copias innecesarias.
¿Cómo se inicializa un arreglo de 100 elementos con todos en 0? ¿Y uno de 10 elementos con valores específicos?
int arr[100] = {}; // todos en 0. int arr[10] = {1,2,3,4,5,6,7,8,9,10}; // valores específicos. Si especificas menos, el resto son 0.
📝 ¿Listo para evaluarte?
Regístrate o inicia sesión para tomar la autoevaluación o el test de este tema y registrar tu puntaje.