Arrays o arreglos multidimensionales en C. Matrices. Ejemplos y ejercicios resueltos varios índices (CU00515F)

Resumen: Entrega nº15 del tutorial "Curso básico de programación en lenguaje C desde cero".
Codificación aprenderaprogramar.com: CU00515F

 

 

ARRAYS (ARREGLOS) MULTIDIMENSIONALES

Tal y como explicamos en su momento, será posible crear arrays con más de una dimensión, pasando de la idea de lista, vector o matriz de una sola fila a la idea de matriz de m x n elementos, estructuras tridimensionales, tetradimensionales, etc. La sintaxis será:

 

logo lenguaje programacion C

 

TipoDeVariable nombreDelArray [dimensión1] [dimensión2] [...] [dimensiónN]

 

TipoDeVariable puede ser uno de los tipos predefinidos de C o bien ser un tipo definido por el programador mediante el uso de la palabra reservada typedef. La declaración de una matriz tradicional de m x n elementos podría ser:

int A [3] [2]

 

El número de elementos declarados (recordar que los índices de arrays comienzan en cero) será de 3 x 2 = 6, correspondiente a (2+1) x (1+1) = 3 x 2.

Vamos a definir una matriz con el mismo ejemplo que usamos cuando hablamos de pseudocódigo: queremos almacenar en una matriz el número de alumnos con que cuenta una academia ordenados en función del nivel y del idioma que se estudia. Tendremos 3 filas que representarán Nivel básico, medio o de perfeccionamiento y 4 columnas que representarán los idiomas (0 = Inglés, 1 = Francés, 2 = Alemán y 3 = Ruso). La declaración de dicha matriz sería:

int alumnosfxniveleidioma [3] [4];

 

 

Podríamos asignar contenidos de la siguiente manera:

alumnosfxniveleidioma[0] [0] = 7;                   alumnosfxniveleidioma[0] [1] = 14;

alumnosfxniveleidioma[0] [2] = 8;                   alumnosfxniveleidioma[0] [3] = 3;

alumnosfxniveleidioma[1] [0] = 6;                   alumnosfxniveleidioma[1] [1] = 19;

alumnosfxniveleidioma[1] [2] = 7;                   alumnosfxniveleidioma[1] [3] = 2;

alumnosfxniveleidioma[2] [0] = 3;                   alumnosfxniveleidioma[2] [1] = 13;

alumnosfxniveleidioma[2] [2] = 4;                   alumnosfxniveleidioma[2] [3] = 1;

 

La representación gráfica que podríamos asociar a esta asignación de datos sería esta matriz:

arrays o arreglos multidimensionales

 

La organización de la información en matrices nos generará importantes ventajas a la hora del tratamiento de datos en nuestros programas.

Para terminar en cuanto a multidimensionalidad, veamos casos de declaraciones con más de dos dimensiones. Para ello volveremos al ejemplo del conteo de coches (suponemos que queremos registrar el número de coches que han pasado por hora). La forma de declarar esos array sería la siguiente:

Duración del conteo

Tipo de array

Declaración con C

(Nc es Número de coches)

Un día

Array de un localizador (hora)

int Nc[24];

Varios días

Array de dos localizadores (hora y día)

int Nc[24] [31];

Varios meses

Array de tres localizadores (hora, día y mes)

int Nc[24] [31] [12];

Varios años

Array de cuatro localizadores (hora, día, mes y año)

int Nc[24] [31] [12] [2999];

Varios siglos

Array de cinco localizadores (hora, día, mes, año y siglo)

int Nc[24] [31] [12] [2999] [21];

 

 

Veamos lo que sería un ejemplo de programa con array multidimensional. Escribe y ejecuta este código.

#include <stdio.h>
#include <stdlib.h>

int main() {
int habitantesVivienda[5][25];
habitantesVivienda[3][24] = 4;
printf("El numero de personas que viven en la vivienda 24 del piso 3 es %d\n", habitantesVivienda[3][24]);
return 0; //Ejemplo aprenderaprogramar.com
}

 

 

El resultado del programa es que se muestra el mensaje “El numero de personas que viven en la vivienda 24 del piso 3 es 4”. Fíjate que en un array multidimensional cada índice tiene un significado.

 

 

EJERCICIO

Crea el código de un programa que cumpla las siguientes premisas. Declara un array de elementos enteros y tres dimensiones denominado ventasEmpleadoOficinaEdificio. La primera dimensión tendrá 6 elementos, la segunda 10 y la tercera 2. Establece para el elemento con índices 3, 7, 2 un valor igual a 4234. A continuación haz que se muestre por pantalla (ventana de consola) el texto: “El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido 4234 unidades”, donde 4234 estará definido referenciando al elemento del array creado previamente.

Responde a estas preguntas:

a) ¿Cuántos elementos componen el array multidimensional?

b) ¿Qué ocurre si intentamos mostrar por pantalla un valor con un índice que no está definido para ese array multidimensional?

c) Modifica el valor de productos vendidos para que pase a ser el valor anterior más diez. A continuación muestra el mismo mensaje que anteriormente. En esta ocasión, dado que hemos modificado el contenido, deberá mostrarse por pantalla: “El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido 4244 unidades”.

 

Para comprobar si tus respuestas son correctas puedes consultar en los foros aprenderaprogramar.com.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

¿Puedo yo aprender?

Seas o no del área informática, si quieres aprender a programar te ofrecemos una solución guiada y personalizada: realizar un curso tutorizado on-line. Con este tipo de curso, podrás aprender a programar de forma ágil y amena.

Acceder a detalles y precios de los cursos tutorizados on-line

Política sobre cookies

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, de acuerdo a tus hábitos de navegación.

Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra Política de Cookies.

En Facebook!

Ahora puedes seguirnos en Facebook. Noticias, novedades y mucho más ¡Te esperamos!

RANKING APR2+

Ranking de lenguajes y entornos de programación aprenderaprogramar.com
 

MARZO - ABRIL 2017

1. Java / J2EE
2. Entornos Oracle
3. JavaScript, jQuery
4. .NET, C#
5. Entornos SQL Server
6. HTML, CSS
7. Php, MySql
8. Android, iOS


Acceder a detalles sobre el ranking de programación aprenderaprogramar.com

FOROS APR2+

Pregunta, responde, consulta, lee, intercambia...

Participa!!! Entra en los foros aprenderaprogramar.com.

             Copyright 2006-2017 aprenderaprogramar.com                La web abierta a cualquier persona interesada en la programación