Lección 5

Arrays

Respuesta corta: un array es una fila de cajas del mismo tipo, contiguas en memoria, numeradas desde 0. int a[5] te da cinco int llamados a[0] a a[4].

Declarar, rellenar, imprimir

#include <iostream>
using namespace std;

int main() {
    int a[5] = {10, 20, 30, 40, 50};

    for (int i = 0; i < 5; i++) {
        cout << "a[" << i << "] = " << a[i] << endl;
    }
    return 0;
}

Fíjate en el límite: i < 5, porque los índices válidos son 0..4. Con i <= 5 leerías a[5], que no existe.

Leer dentro de un array

Los arrays brillan cuando la longitud se conoce primero — lee n y luego n valores:

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int a[100];
    for (int i = 0; i < n; i++) cin >> a[i];

    int suma = 0;
    for (int i = 0; i < n; i++) suma += a[i];
    cout << "suma = " << suma << endl;
    return 0;
}

El array se declara más grande de lo necesario (100) porque en C++ el tamaño se fija en compilación — no se puede redimensionar. Esta es exactamente la forma de Máximo de un array y Contar pares e impares.

El patrón del máximo corriente

El patrón de arrays más útil que escribirás cien veces: llevar un valor mejor mientras recorres.

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int a[100];
    for (int i = 0; i < n; i++) cin >> a[i];

    int mejor = a[0];
    for (int i = 1; i < n; i++) {
        if (a[i] > mejor) mejor = a[i];
    }
    cout << "max = " << mejor << endl;
    return 0;
}

Sembrar mejor con a[0] (no con 0) es lo que hace funcionar la entrada toda negativa. Sembrar con 0 es el bug más común en problemas de máximo — pruébalo y verás esta entrada fallar.

Arrays bidimensionales

Filas y columnas necesitan dos índices: a[fila][col].

#include <iostream>
using namespace std;

int main() {
    int g[2][3] = {{1, 2, 3}, {4, 5, 6}};

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            cout << g[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

La convención importa: el primer índice es la fila. Al revés, la cuadrícula se imprime transpuesta — mira Transponer una matriz.

Los tres bugs de arrays

Practica esta lección

Estos problemas ejercitan exactamente lo que acabas de leer: