PLE:Unidad4

=Arrays= Un array es una estructura de datos formada por una serie de elementos de un mismo tipo y que se almacenan en direcciones de memoria contiguas. Los elementos de un array se referencian mediante índices.

Para declarar una array debemos indicar el tipo de datos, el identificador y el número de elemntos que lo forman, como se muestra a continuación:

int num[5]; float nota[5]; char nombre[20];

EL tipo puede ser cualquier tipo válido (int, float, double,...) y el número de elementos debe ser un número entero.

=Inicialización de arrays= En la declaración de un array se puede incluir la inicialización del mismo. Para ello se especifican los valores de cada elemento separados por comas y encerrados entre llaves "{}".

int nota[5] = { 5, 6, 4, 3, 5 };

El numero de valores que aparecen encerrados entre llaves no puede ser superior al de elementos declarados en el array.

En el caso de array con valores iniciales, es posible no declarar el tamaño del array. En este caso el tamaño del array se coresponderá con el número de elementos indicados entre llaves.

int nota[] = { 1, 5, 7, 8, 2 };

=Acceso a los elementos de un array= El acceso a los elementos de una array se lleva a cabo especificando entre corchetes la posición del elemento al que queremos acceder. Debemos tener en cuenta que el primer elemento se encentra en la posición 0.

nota[0]

Podemos acceder a los elementos de un array tanto para leer el valor como para escribir sobre dicho elemento.

Para almacenar en el segundo elemento del array nota, el valor 7:

nota[1] = 7;

Para leer el valor del tercer elemento del array nota y almacenarlo en un variable:

a = nota[2];

Debemos tener en cuenta que cada uno de los elementos del array nota, es un entero y podemos acceder en las mismas condiciones que una variable de tipo entero. Podemos mostrar el valor en pantalla, asignarlo a una variable o utilizarlo en un expresión:

int nota[3] = { 1, 3, 5 }; nota[0] = 9; cout << "La primera nota es " << nota[0]; cout << "La media es = " << (nota[0] + nota[1] + nota[3])/3.0 ;

Debemos ser cuidadosos a la hora de acceder a los elementos de un array, pues el compilador no nos previene de accesos fuera de rango. En el caso de acceder a elementos inexistentes el resultado se´ra imprevisible.

=Arrays multidimensionales= Hasta el momento hemos trabajado con arrays unidimensionales, en los que disponemos de una serie de elementos a los que accedemos mediante un único índice. Sin embargo es posible declarar arrays con dos o más dimensiones. Veamos un ejemplo:

int notas[3][5];

En este caso declaramos un array de dos dimensiones que se puede representar gráficamente como una tabla.

notas 0  1   2   3   4    ___________________ 0 |   |   |   |   |   |   |___|___|___|___|___| 1 |   |   |   |   |   |   |___|___|___|___|___| 2 |   |   |   |   |   |   |___|___|___|___|___|

En este caso los elementos se acceden mediante dos índices, que se especifican utilizando corchetes como se muestra a continuación:

notas[1][2];

En este caso para recorrer los elementos que componen el array necesitamos dos bucles anidados:

for(i=0; i < 3; i++) {	for(j = 0; j < 5; j++) {		cout << notas[i][j]; } }

=Cadenas= Una cadena es un array de caracteres finalizada por un caracter nulo '\0'. Al igual que un array de cualquier otro tipo debemos especificar el número de elementos. El número especificada índica el tamaño máximo de la cadena incluido el caracter nulo.

char nombre[20];

Es posible almacenar cadenas con un tamaño menor al especificado, ya que el terminador nulo indica el final de la misma.

=Inicialización de cadenas= Para inicializar cadenas podemos emplear la siguiente sintaxis:

char nombre = {'J', 'u', 'a', 'n', '\0'};

O bien:

char nombre = "Juan";

En este último caso el compilador se encargará de agregar el terminador nulo.

=Ejercicios=
 * 1) Crea un programa que lea diez valores enteros en un array desde el teclado y calcule y muestre: la suma, el valor promedio, el mayor y el menor. Solución.
 * 2) Crea un programa que coloque el último elemento de un vector de 10 enteros en el primer lugar, el penúltimo en el segundo y así sucesivamente. Solución.
 * 3) Codificar un programa para simular el lanzamiento de un dado. Lo lanzaremos 6000 veces y mostraremos por pantalla el número de veces que ha salido cada valor.  Solución.
 * 4) Dado un vector de enteros introducidos por teclado(10), declarar dos funciones (Max y Min) que encuentren el máximo y el mínimo de los elementos del vector, las posiciones que ocupan y cuántas veces se repiten ambos. Solución.
 * 5) Crea un programa quinielistico que asigne el valor 1 x 2 con las probablidades 0.5 0.3 y 0.2 respectivamente. Solución.
 * 6) Almacena en un array multidimensional las notas de una clase de 30 alumnos, correspondiente a 5 asignaturas. Calcula y muestra la media de cada alumno y cada asignatura. Solución.
 * 7) Crea un programa que lea una cadena de caracteres y muestro el número de caracteres que la componen. Solución.
 * 8) Lee una cadena e indica el número de vocales que contiene. Solución.
 * 9) Lee una cadena y la muestras al revés. Solución.
 * 10) Lee una cadena e indica el número de vocales, consonantes y espacios en blanco que contiene. Solución.
 * 11) Crea una función que indique si una cadena es palíndromo. Solución.
 * 12) Lee el nombre y apellidos de un alumno y muestralos por separado.
 * 13) Juego del ahorcado.
 * 14) Juego conecta 4.