Lección 10 · 10 de 20
Arrays · C
Guarde muchos valores del mismo tipo en un array de C: las temperaturas de una semana, su media y su máximo, con índices que empiezan en 0.

Un array guarda varios valores del mismo tipo, uno detrás de otro en la memoria. double temps[7] = {...} reserva sitio para siete double y les da sus valores entre llaves. days es otro array, de siete char.
Cada elemento se alcanza con su índice entre corchetes, y los índices empiezan en 0: temps[0] es el lunes y temps[6], el domingo. El número de elementos se calcula con sizeof(temps) / sizeof(temps[0]): el tamaño total entre el de uno. temps[2] = 20.0 cambia el miércoles.
Un for de 0 a count - 1 recorre el array: escribe cada día, suma las temperaturas en sum y guarda la mayor en max, junto con su posición en hottest. Con eso se calcula la media y se sabe cuál fue el día más caluroso.
Si se dan menos valores que el tamaño, el resto empieza en 0: en votes[4] = {3, 5} las opciones 3 y 4 valen 0. Cuidado: C no comprueba los límites, y temps[7] leería memoria que no es del array sin avisar.
Código · main.c
#include <stdio.h>int main(void) { // An array keeps several values of the same type, one after another. double temps[7] = {18.5, 21.0, 19.5, 24.0, 26.5, 22.0, 17.5}; char days[7] = {'M', 'T', 'W', 'T', 'F', 'S', 'S'}; int count = sizeof(temps) / sizeof(temps[0]); // 7 elements // Positions start at 0: temps[0] is the first, temps[6] the last. printf("First: %.1f, last: %.1f\n", temps[0], temps[count - 1]); temps[2] = 20.0; // change one element double sum = 0, max = temps[0]; int hottest = 0; for (int i = 0; i < count; i++) { printf("%c %5.1f\n", days[i], temps[i]); sum += temps[i]; if (temps[i] > max) { max = temps[i]; hottest = i; } } printf("Average: %.2f\n", sum / count); printf("Hottest: day %d (%c), %.1f degrees\n", hottest + 1, days[hottest], max); // Elements without a value start at 0. int votes[4] = {3, 5}; votes[3] += 2; for (int i = 0; i < 4; i++) printf("Option %d: %d votes\n", i + 1, votes[i]); return 0;}Salida · cc main.c -o main && ./main
First: 18.5, last: 17.5 M 18.5 T 21.0 W 20.0 T 24.0 F 26.5 S 22.0 S 17.5 Average: 21.36 Hottest: day 5 (F), 26.5 degrees Option 1: 3 votes Option 2: 5 votes Option 3: 0 votes Option 4: 2 votes
Para recordar
- Un array guarda varios valores del mismo tipo.
- Los índices van de
0atamaño - 1. sizeof(a) / sizeof(a[0])da el número de elementos.- Los elementos sin valor inicial valen 0.
- C no comprueba si el índice se sale del array.
Ejercicio
Añada la temperatura mínima y su día, y cuente cuántos días pasaron de 20 grados.