SlideShare una empresa de Scribd logo
1 de 10
Vectores y Matrices
1 Objetivos
Al finalizar esta actividad, serás capaz de:
1. Escribir la declaración de vectores y matrices de tipos básicos.
2. Escribir el código necesario para recorrer los elementos de vectores y matrices.
3. Escribir el código necesario para acceder a un elemento de un vector o una
matriz.
2 Motivación
Hasta ahora hemos trabajado con datos elementales (enteros, reales, caracteres;
int, float, char) donde podíamos almacenar 1 sólo dato del tipo especificado. En
muchas ocasiones es necesario trabajar con gran cantidad de datos de un mismo tipo.
Por ejemplo imagina que tienes que hacer un programa donde el usuario es un
profesor que quiere almacenar las notas de sus alumnos para posteriormente hacer
estadísticas y cálculos como nota máxima, mínima, la media, etc.
Podríamos hacerlo declarando una variable de tipo float para cada nota pero eso
puede llegar a ser intratable si la cantidad de notas a almacenar fuera muy grande.
Además el programa sería muy engorroso y difícil de entender.
Con los vectores y las matrices conseguimos, bajo un único nombre, es decir, con una
única variable, almacenar tantos valores de un mismo tipo como queramos (según el
tamaño que definamos en su declaración). En el ejemplo anterior, tendríamos un
vector de float con longitud, por ejemplo 100, donde podríamos almacenar hasta 100
valores reales.
3 Los vectores y las matrices en C
3.1 Vectores
Los vectores, también llamados tablas unidimensionales, son tipos de datos
compuestos o estructurados caracterizados por:
- Todos los elementos del vector son del mismo tipo
- Todos los elementos del vector son referenciados con el mismo nombre y la
diferencia entre ellos es el índice de la posición que ocupan dentro del vector
- Todos sus elementos son almacenados en posiciones de memoria contiguas.
El formato general para la declaración de una variable de tipo vector es la siguiente:
Tipo_de_datos nombre_del_vector [tamaño_del_vector]
Donde:
Tipo_de_datos indica el tipo de datos almacenados en la variable vector que se está
declarando (int, float, char o cualquier otro tipo definido).
Nombre_del_vector indica el nombre de la variable vector que se está declarando.
Con este nombre refenciaremos a cada elemento del vector.
Tamaño es un entero, o una constante de tipo entero, que indica cuántas
posiciones tiene ese vector, es decir, cuál es el número máximo de elementos del tipo
Tipo_de_datos que se pueden guardar en la variable Nombre_del_vector que estamos
declarando. El tamaño no puede ser una variable.
1
Por ejemplo:
float notas[100];
Sería la declaración de la variable notas donde podríamos almacenar hasta 100
números reales.
Graficamente podríamos representarlo así:
notas
Para acceder a cada casilla del vector utilizamos un número entero llamado subíndice,
que indica la posición del elemento dentro del vector. En C, los elementos empiezan a
numerarse en el 0. Así el primer elemento del vector notas será notas sub 0, el
segundo notas sub 1, etc., y el último notas sub 99. Fíjate que el último elemento es
el que ocupa la posición tamaño_del_vector menos 1.
notas
0 1 2 3 99
La sitaxis para acceder a estos elementos en C es la siguiente:
notas[0] (primer elemento)
notas[1] (segundo elemento)
….
notas[99] (último elemento)
Operaciones que podemos hacer con un vector
a.- Consultar o leer el valor de un elemento del vector
Si queremos poner en la variable nota_alu5, la nota del alumno que tenemos en la
posición 5 del vector anterior, haríamos la siguiente asignación:
float notas[100], nota_alu5; /*Declaración de variables */
...
nota_alu5 = notas[5];
b.- Asignar o escribir un valor en un elemento del vector
Si queremos poner un 8 al alumno que está en la posición 5 haríamos la siguiente
asignación:
notas[5] = 8;
En estos dos casos, el acceso al elemento del vector que queremos leer o en el que
queremos escribir es directo, porque solamente leemos o modificamos un elemento, el
5 en ambos ejemplos. Si queremos recorrer todo el vector, ya sea para leer como para
escribir, tendremos que utilizar un bucle.
c.- Recorrido de un vector
El bucle más utilizado para recorrer un vector es el for, porque a priori sabemos
cuántas vueltas dará el bucle (tantas como elementos del vector a visitar).
Mira el siguiente ejemplo:
2
#define MAX 20
void main()
{
float notas[MAX];
int i;
for (i=0; i<MAX; i++)
{ printf(“Dame la nota de la posición %d: “, i);
scanf(“%f”, &notas[i]);
}
}
Este programa pide las notas de los alumnos y las almacena en el vector notas.
Ejercicio 1: Escribe el anterior programa en el ordenador y verifica con el debugger
cómo se van colocando cada valor en su posición correspondiente del vector.
Observa como en la pestaña locals aparecen las variables del programa, en este caso
la variable i, y la variable notas.
Al lado de notas, el símbolo quiere decir que es un tipo compuesto, y clicando
encima verás el contenido de cada elemento del vector.
3
Inicialmente tienen un valor “raro”, “basura” podríamos decir, porque el programa
todavía no le ha puesto ningún valor. En cuanto se introduzcan los valores por teclado
verás como se almacenan en cada elemento del vector.
Ejercicio 2: Modifica el anterior programa para que una vez introducidos las notas en
el vector, muestre por pantalla las notas suspendidas. El programa ha de indicar
también en qué posición del vector se encuentra la nota. Es decir los mensajes que se
escribirían por pantalla serían del tipo :
Posicion 2 Nota 4
para cada nota suspendida que encuentres en el vector.
Ejercicio 3: Modifica el anterior programa para que al final diga cuántos suspensos y
cuántos aprobados ha habido, y muestre también el porcentaje de ambos.
3.1 Matrices
Las matrices, también llamados tablas bidimensionales, son tipos de datos
compuestos o estructurados caracterizados por:
- Todos los elementos de la matriz son del mismo tipo
- Todos los elementos de la matriz son referenciados con el mismo nombre y la
diferencia entre ellos son los índices de la posición que ocupan dentro de la
matriz
El formato general para la declaración de una variable de tipo matriz es la siguiente:
Tipo_de_datos nombre_de_la_matriz [número_filas] [número_columnas]
Donde:
4
Tipo_de_datos indica el tipo de datos almacenados en la variable matriz que se está
declarando (int, float, char o cualquier otro tipo definido).
Nombre_de_la_matriz indica el nombre de la variable matriz que se está
declarando. Con este nombre refenciaremos a cada elemento de la matriz.
Número_filas es un entero, o una constante de tipo entero, que indica cuántas
filas tiene esa matriz
Número_columnas es un entero, o una constante de tipo entero, que indica
cuántas columnas tiene esa matriz
El número de filas y de columnas no puede ser una variable.
Por ejemplo:
#define MAX_ASIG 6 /*Definición de las constantes */
#define MAX_ALUM 40
...
float notas[MAX_ASIG][MAX_ALUM];
Sería la declaración de la variable notas donde almacenaríamos todas las notas de los
alumnos de cada asignatura. MAX_ASIG y MAX_ALUM serían dos constantes con valores
enteros declaradas anteriormente.
Graficamente podríamos representarlo así:
notas columna
fila
En este ejemplo la fila indica la asignatura y la columna el alumno.
Para acceder a cada elemento de la matriz utilizamos dos números enteros llamados
subíndices, que indica la fila y la columna donde se encuentra el elemento dentro de la
matriz. En C, los elementos empiezan a numerarse en el 0. Así el primer elemento de
la matriz notas será notas[0][0] y el último notas [MAX_ASIG -1][MAX_ALUM – 1].
Si te fijas notarás que es exactamente igual que los vectores, pero con 2 dimensiones
(la fila y la columna) en lugar de 1.
Operaciones que podemos hacer con una matriz
a.- Consultar o leer el valor de un elemento de la matriz
Si queremos poner en la variable nota_alu5, la nota del alumno que tenemos en la
posición 5 dentro de la asignatura 0, haríamos la siguiente asignación:
5
float nota_alu5, notas[MAX_ASIG][NAX_ALUM]; /*Declaración de variables*/
...
nota_alu5 = notas[0][5];
b.- Asignar o escribir un valor en un elemento de la matriz
Si queremos poner un 8 en la asignatura 0 al alumno que está en la posición 5
haríamos la siguiente asignación:
notas[0][5] = 8;
En estos dos casos, el acceso al elemento de la matriz que queremos leer o en el que
queremos escribir es directo, porque solamente leemos o modificamos un elemento, el
fila 0, columna 5 en estos ejemplos. Si queremos recorrer toda la matriz, ya sea para
leer como para escribir, tendremos que utilizar un bucle.
c.- Recorrido de una matriz
Al igual que para recorrer un vector, para recorrer una matriz, el bucle más utilizado
para recorrer es el for, porque a priori sabemos cuántas vueltas dará el bucle (tantas
como elementos de la matriz a visitar).
Podemos recorrer la matriz por filas o por columnas. La manera de hacerlo
dependerá del ejercicio.
En el siguiente ejemplo se piden las notas por teclado haciendo un recorrido por filas,
pidiendo consecutivamente las notas de todos los alumnos de cada asignatura:
#define MAX_ASIG 6
#define MAX_ALUM 40
void main()
{
float notas [MAX_ASIG][MAX_ALUM];
int i,j;
for (i=0; i<MAX_ASIG; i++) /*Para cada asignatura (para cada fila)*/
{ printf(“Dame las notas de la asignatura %d: “, i);
for(j=0; j<MAX_ALUM; j++) /* Para cada alumno de cada asignatura (para
cada columna de cada fila) */
{ printf(“Nota del alumno %d:”, j);
scanf(“%f”, &notas[i][j]);
}
}
}
Escribe el anterior código en el ordenador y comprueba con el debugger como se van
alamacenando los valores que introduces por teclado dentro de la matriz notas.
Igual que con los vectores verás en el apartado Locals la variable notas de tipo
matriz de float. Al lado encontrarás el símbolo . Al clicar verás que se desplega y
apareceen las filas de la matriz:
6
En este caso hay 6 filas. Si clicas en el símbolo de alguna fila podrás ver todas las
columnas de dicha fila:
En este ejemplo, el elemento de la matriz seleccionado, el que está con fondo negro,
es el notas[0][4].
7
Habrás observado que ejecutar el programa anterior paso a paso es un poco pesado
porque los bucles dan muchas vueltas. Cuando estamos es fase de pruebas, conviene
probar con tamaños pequeños de vectores y matrices hasta que estemos seguros que
el programa funciona correctamente. Entonces lo ejecutaremos con los tamaños
reales. Fíjate lo fácil que es cambiar los tamaños para hacer pruebas. Simplemente
tienes que cambiar los valores de las constantes definidas con los #define (el resto de
código se queda igual).
Ejercicio 4: Amplia el programa anterior para que al final muestre por pantalla las
notas del alumno 3 en todas sus asignaturas. Para probarlo utiliza valores más
pequeños de MAX_ASIG y MAX_ALUM.
Ejercicio 5: Modifica el anterior programa para que en lugar de solo mostrar las notas
del alumno 3, muestre las notas de todos los alumnos, indicando primero el alumno y
después las notas de cada asignatura. Es decir:
Notas del alumno 0:
Asignatura 0 Nota 5,6
Asignatura 1 Nota 9,2
… etc
Ejercicio 6: Amplia el programa del ejercicio 5 para almacenar en otra variable de
tipo vector la nota media de las asignaturas de cada alumno y las muestre por
pantalla. Los mensajes serían del estilo:
La nota media del alumno 0 es 6,9
La nota media del alumno 1 es 5,9
… etc
4. Error común
El error más común al trabajar tanto con vectores como con matrices es lo que se
suele llamar “pasarse del rango del vector”, es decir, acceder a un elemento que no
pertenece el vector.
Ilustraremos esto con un ejemplo:
#define MAX 10
void main()
{
float notas[MAX];
int i;
for (i=0; i<=MAX; i++)
{ printf(“Dame la nota de la posición %d: “, i);
scanf(“%f”, &notas[i]);
}
}
Ejercicio 7: Escribe el anterior código en el ordenador y ejecútalo paso a paso con el
debugger. Este sería el aspecto después de 1 iteración, observa como i vale 1 y
hemos introducido un 6 en notas[0].
8
Ejecútalo hasta el final y di ¿Qué valor tiene la variable i al salir del bucle? ¿Cuántos
valores hemos introducido en total? ¿Funciona correctamente? ¿Por qué? ¿Cómo lo
arreglarías?
Ejercicio 8. Escribe un programa que dado un vector de caracteres de tamaño 100,
diga cuántas veces aparece la letra a. Las letras en el vector ya están introducidas y el
último carácter es el ‘.’. Para declarar un vector de caracteres y asignarle una frase
acabada en un ‘.’ puede hacer lo siguiente:
char frase [80] = “Esta es la frase.”
Ahora puedes acceder a las posiciones del vector tal y como has visto antes para el
caso de los float.
Ejercicio 9. Escribe un programa que dada una matriz cuadrada (tantas filas como
columnas) de enteros, almacene en otra variable de tipo matriz de enteros, la
transpuesta de la primera. La matriz transpuesta se obtiene cambiando filas por
columnas.
Ejercicio 10. Escribe un programa que dada una matriz de enteros, construya un
vector en el que cada posición contenga el máximo de todos los valores que hay en la
fila correspondiente de la matriz. Por ejemplo, en la posición 7 del vector debe quedar
el valor mayor de entre todos los que hay en la fila 7 de la matriz (posiciones [7][0],
[7][1], [7][2], etc.).
9
Ejecútalo hasta el final y di ¿Qué valor tiene la variable i al salir del bucle? ¿Cuántos
valores hemos introducido en total? ¿Funciona correctamente? ¿Por qué? ¿Cómo lo
arreglarías?
Ejercicio 8. Escribe un programa que dado un vector de caracteres de tamaño 100,
diga cuántas veces aparece la letra a. Las letras en el vector ya están introducidas y el
último carácter es el ‘.’. Para declarar un vector de caracteres y asignarle una frase
acabada en un ‘.’ puede hacer lo siguiente:
char frase [80] = “Esta es la frase.”
Ahora puedes acceder a las posiciones del vector tal y como has visto antes para el
caso de los float.
Ejercicio 9. Escribe un programa que dada una matriz cuadrada (tantas filas como
columnas) de enteros, almacene en otra variable de tipo matriz de enteros, la
transpuesta de la primera. La matriz transpuesta se obtiene cambiando filas por
columnas.
Ejercicio 10. Escribe un programa que dada una matriz de enteros, construya un
vector en el que cada posición contenga el máximo de todos los valores que hay en la
fila correspondiente de la matriz. Por ejemplo, en la posición 7 del vector debe quedar
el valor mayor de entre todos los que hay en la fila 7 de la matriz (posiciones [7][0],
[7][1], [7][2], etc.).
9

Más contenido relacionado

La actualidad más candente

Vectores en programacion
Vectores en programacionVectores en programacion
Vectores en programacionlaryenso
 
Clase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y ArreglosClase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y Arreglossalomonaquino
 
Expo array
Expo arrayExpo array
Expo arrayEd Burke
 
Funciones en lenguage c
Funciones en lenguage cFunciones en lenguage c
Funciones en lenguage cLorena Sanchez
 
Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++Tensor
 
Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Simeon Bordones
 
Vectores - Informática
Vectores - InformáticaVectores - Informática
Vectores - Informáticacompumet sac
 
Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++Diego Maxdj Chicaiza
 
Vectores Matrices I
Vectores Matrices IVectores Matrices I
Vectores Matrices Igonmrod
 
Estructura de datos (Arreglos)
Estructura de datos (Arreglos)Estructura de datos (Arreglos)
Estructura de datos (Arreglos)mauriciog456
 
Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++Tensor
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoriaIronAngel
 
Estructura de Datos Arreglos
Estructura de Datos ArreglosEstructura de Datos Arreglos
Estructura de Datos Arreglosguestc906c2
 
Vectores Matrices I
Vectores Matrices IVectores Matrices I
Vectores Matrices Iguestaf8aa5
 
Vectores, array y sus métodos
Vectores, array y sus métodosVectores, array y sus métodos
Vectores, array y sus métodosOrlando Verdugo
 

La actualidad más candente (20)

Vectores en programacion
Vectores en programacionVectores en programacion
Vectores en programacion
 
Clase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y ArreglosClase 10 Estructuras De Datos Y Arreglos
Clase 10 Estructuras De Datos Y Arreglos
 
Vectores y matrices
Vectores y matricesVectores y matrices
Vectores y matrices
 
Estructuras de datos i print
Estructuras de datos i printEstructuras de datos i print
Estructuras de datos i print
 
Vectores en programación
Vectores en programaciónVectores en programación
Vectores en programación
 
Expo array
Expo arrayExpo array
Expo array
 
Funciones en lenguage c
Funciones en lenguage cFunciones en lenguage c
Funciones en lenguage c
 
Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++
 
4 variables, arreglos, estructuras y enum
4 variables, arreglos, estructuras y enum4 variables, arreglos, estructuras y enum
4 variables, arreglos, estructuras y enum
 
Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos
 
Vectores - Informática
Vectores - InformáticaVectores - Informática
Vectores - Informática
 
Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++Ejercicios de matrices y vectores en c++
Ejercicios de matrices y vectores en c++
 
Vectores Matrices I
Vectores Matrices IVectores Matrices I
Vectores Matrices I
 
Estructura de datos (Arreglos)
Estructura de datos (Arreglos)Estructura de datos (Arreglos)
Estructura de datos (Arreglos)
 
Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++Punteros y elementos dinámicos en c++
Punteros y elementos dinámicos en c++
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
Estructura de Datos Arreglos
Estructura de Datos ArreglosEstructura de Datos Arreglos
Estructura de Datos Arreglos
 
Cap06
Cap06Cap06
Cap06
 
Vectores Matrices I
Vectores Matrices IVectores Matrices I
Vectores Matrices I
 
Vectores, array y sus métodos
Vectores, array y sus métodosVectores, array y sus métodos
Vectores, array y sus métodos
 

Destacado

Sentencias condicionales y ciclos
Sentencias condicionales y ciclosSentencias condicionales y ciclos
Sentencias condicionales y ciclosSohar Carr
 
Análisis Mr Holland's Opus
Análisis Mr Holland's OpusAnálisis Mr Holland's Opus
Análisis Mr Holland's OpusSohar Carr
 
Capitulo 9, 7ma edición
Capitulo 9, 7ma ediciónCapitulo 9, 7ma edición
Capitulo 9, 7ma ediciónSohar Carr
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...Sohar Carr
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...Sohar Carr
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica...
 solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica... solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica...Sohar Carr
 
Repaso teoría electromagnética
Repaso teoría electromagnéticaRepaso teoría electromagnética
Repaso teoría electromagnéticaSohar Carr
 
Capitulo 6, 7ma edición
Capitulo 6, 7ma ediciónCapitulo 6, 7ma edición
Capitulo 6, 7ma ediciónSohar Carr
 
Capitulo 10, 7ma edición
Capitulo 10, 7ma ediciónCapitulo 10, 7ma edición
Capitulo 10, 7ma ediciónSohar Carr
 
Capitulo 12, 7ma edición
Capitulo 12, 7ma ediciónCapitulo 12, 7ma edición
Capitulo 12, 7ma ediciónSohar Carr
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...Sohar Carr
 
Capitulo 11 líneas de transmisión
Capitulo 11   líneas de transmisiónCapitulo 11   líneas de transmisión
Capitulo 11 líneas de transmisiónSohar Carr
 
Capitulo 5, 7ma edición
Capitulo 5, 7ma ediciónCapitulo 5, 7ma edición
Capitulo 5, 7ma ediciónSohar Carr
 
Capitulo 13, 7ma edición
Capitulo 13, 7ma ediciónCapitulo 13, 7ma edición
Capitulo 13, 7ma ediciónSohar Carr
 
Análisis Matemático
Análisis MatemáticoAnálisis Matemático
Análisis MatemáticoSohar Carr
 
Capitulo 4, 7ma edición
Capitulo 4, 7ma ediciónCapitulo 4, 7ma edición
Capitulo 4, 7ma ediciónSohar Carr
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PICSohar Carr
 
Capitulo 12 la onda plana uniforme
Capitulo 12   la onda plana uniformeCapitulo 12   la onda plana uniforme
Capitulo 12 la onda plana uniformeSohar Carr
 

Destacado (20)

Sentencias condicionales y ciclos
Sentencias condicionales y ciclosSentencias condicionales y ciclos
Sentencias condicionales y ciclos
 
Análisis Mr Holland's Opus
Análisis Mr Holland's OpusAnálisis Mr Holland's Opus
Análisis Mr Holland's Opus
 
Capitulo 9, 7ma edición
Capitulo 9, 7ma ediciónCapitulo 9, 7ma edición
Capitulo 9, 7ma edición
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica...
 solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica... solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica...
 
Repaso teoría electromagnética
Repaso teoría electromagnéticaRepaso teoría electromagnética
Repaso teoría electromagnética
 
Capitulo 6, 7ma edición
Capitulo 6, 7ma ediciónCapitulo 6, 7ma edición
Capitulo 6, 7ma edición
 
Capitulo 10, 7ma edición
Capitulo 10, 7ma ediciónCapitulo 10, 7ma edición
Capitulo 10, 7ma edición
 
Capitulo 12, 7ma edición
Capitulo 12, 7ma ediciónCapitulo 12, 7ma edición
Capitulo 12, 7ma edición
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
 
Capitulo 11 líneas de transmisión
Capitulo 11   líneas de transmisiónCapitulo 11   líneas de transmisión
Capitulo 11 líneas de transmisión
 
Capitulo 5, 7ma edición
Capitulo 5, 7ma ediciónCapitulo 5, 7ma edición
Capitulo 5, 7ma edición
 
Capitulo 13, 7ma edición
Capitulo 13, 7ma ediciónCapitulo 13, 7ma edición
Capitulo 13, 7ma edición
 
Análisis Matemático
Análisis MatemáticoAnálisis Matemático
Análisis Matemático
 
Capitulo 4, 7ma edición
Capitulo 4, 7ma ediciónCapitulo 4, 7ma edición
Capitulo 4, 7ma edición
 
Ccna modulo 1
Ccna modulo 1Ccna modulo 1
Ccna modulo 1
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PIC
 
Bohm
BohmBohm
Bohm
 
Capitulo 12 la onda plana uniforme
Capitulo 12   la onda plana uniformeCapitulo 12   la onda plana uniforme
Capitulo 12 la onda plana uniforme
 

Similar a Vectores y matrices

Lenguaje de Programacion - Java
Lenguaje de Programacion - JavaLenguaje de Programacion - Java
Lenguaje de Programacion - Javazousbabastre
 
Presentacion de vectores
Presentacion de vectoresPresentacion de vectores
Presentacion de vectoresletty20151998
 
Programacion en java_inicio apeuntes para ems
Programacion en java_inicio apeuntes para emsProgramacion en java_inicio apeuntes para ems
Programacion en java_inicio apeuntes para emsCBTis
 
5ta Evaluación de Progamación.docx
5ta Evaluación de Progamación.docx5ta Evaluación de Progamación.docx
5ta Evaluación de Progamación.docxJulioRodolfodeJessHe
 
Programacion fantasticos
Programacion  fantasticosProgramacion  fantasticos
Programacion fantasticosBrenda Jazmin
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datosluna_72
 
Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en cDiego Maxdj Chicaiza
 
Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++Tensor
 
Cap06 arreglos y vectores.
Cap06 arreglos y vectores.Cap06 arreglos y vectores.
Cap06 arreglos y vectores.Miguel Martinez
 
Fundamentos de programacion en java
Fundamentos de programacion en javaFundamentos de programacion en java
Fundamentos de programacion en javaJefferson Sarmiento
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02kevinwm17
 

Similar a Vectores y matrices (20)

Lenguaje de Programacion - Java
Lenguaje de Programacion - JavaLenguaje de Programacion - Java
Lenguaje de Programacion - Java
 
Presentacion de vectores
Presentacion de vectoresPresentacion de vectores
Presentacion de vectores
 
Programacion en java_inicio apeuntes para ems
Programacion en java_inicio apeuntes para emsProgramacion en java_inicio apeuntes para ems
Programacion en java_inicio apeuntes para ems
 
Grupo
GrupoGrupo
Grupo
 
Constantes y variables enitmar
Constantes y variables enitmarConstantes y variables enitmar
Constantes y variables enitmar
 
5ta Evaluación de Progamación.docx
5ta Evaluación de Progamación.docx5ta Evaluación de Progamación.docx
5ta Evaluación de Progamación.docx
 
Programacion fantasticos
Programacion  fantasticosProgramacion  fantasticos
Programacion fantasticos
 
Vectores
VectoresVectores
Vectores
 
Vectores
VectoresVectores
Vectores
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datos
 
Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en c
 
Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++
 
Cap06 arreglos y vectores.
Cap06 arreglos y vectores.Cap06 arreglos y vectores.
Cap06 arreglos y vectores.
 
Introduccions a java
Introduccions a javaIntroduccions a java
Introduccions a java
 
Fundamentos de programacion en java
Fundamentos de programacion en javaFundamentos de programacion en java
Fundamentos de programacion en java
 
arrays
arraysarrays
arrays
 
Funciones de entrada y salida
Funciones de entrada y salidaFunciones de entrada y salida
Funciones de entrada y salida
 
Arreglos en c++2020
Arreglos en c++2020Arreglos en c++2020
Arreglos en c++2020
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02
 
Ambiente
 Ambiente Ambiente
Ambiente
 

Más de Sohar Carr

Dualidad de ondas
Dualidad de ondasDualidad de ondas
Dualidad de ondasSohar Carr
 
Capitulo 3, 7ma edición
Capitulo 3, 7ma ediciónCapitulo 3, 7ma edición
Capitulo 3, 7ma ediciónSohar Carr
 
Capitulo 2, 7ma edición
Capitulo 2, 7ma ediciónCapitulo 2, 7ma edición
Capitulo 2, 7ma ediciónSohar Carr
 
Capitulo 1, 7ma edición
Capitulo 1, 7ma ediciónCapitulo 1, 7ma edición
Capitulo 1, 7ma ediciónSohar Carr
 
Capitulo 08 el campo magnético estable
Capitulo 08   el campo magnético estableCapitulo 08   el campo magnético estable
Capitulo 08 el campo magnético estableSohar Carr
 
Capitulo 07 ecuaciones de poisson y de laplace
Capitulo 07   ecuaciones de poisson y de laplaceCapitulo 07   ecuaciones de poisson y de laplace
Capitulo 07 ecuaciones de poisson y de laplaceSohar Carr
 
Capitulo 06 dieléctricos y capacitancia
Capitulo 06   dieléctricos y capacitanciaCapitulo 06   dieléctricos y capacitancia
Capitulo 06 dieléctricos y capacitanciaSohar Carr
 
Capitulo 05 corriente y conductores
Capitulo 05   corriente y conductoresCapitulo 05   corriente y conductores
Capitulo 05 corriente y conductoresSohar Carr
 
Capitulo 04 energía y potencial
Capitulo 04   energía y potencialCapitulo 04   energía y potencial
Capitulo 04 energía y potencialSohar Carr
 
Manual de Radio Mobile
Manual de Radio MobileManual de Radio Mobile
Manual de Radio MobileSohar Carr
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...Sohar Carr
 

Más de Sohar Carr (12)

Dualidad de ondas
Dualidad de ondasDualidad de ondas
Dualidad de ondas
 
Capitulo 3, 7ma edición
Capitulo 3, 7ma ediciónCapitulo 3, 7ma edición
Capitulo 3, 7ma edición
 
Capitulo 2, 7ma edición
Capitulo 2, 7ma ediciónCapitulo 2, 7ma edición
Capitulo 2, 7ma edición
 
Capitulo 1, 7ma edición
Capitulo 1, 7ma ediciónCapitulo 1, 7ma edición
Capitulo 1, 7ma edición
 
Capitulo 08 el campo magnético estable
Capitulo 08   el campo magnético estableCapitulo 08   el campo magnético estable
Capitulo 08 el campo magnético estable
 
Capitulo 07 ecuaciones de poisson y de laplace
Capitulo 07   ecuaciones de poisson y de laplaceCapitulo 07   ecuaciones de poisson y de laplace
Capitulo 07 ecuaciones de poisson y de laplace
 
Capitulo 06 dieléctricos y capacitancia
Capitulo 06   dieléctricos y capacitanciaCapitulo 06   dieléctricos y capacitancia
Capitulo 06 dieléctricos y capacitancia
 
Capitulo 05 corriente y conductores
Capitulo 05   corriente y conductoresCapitulo 05   corriente y conductores
Capitulo 05 corriente y conductores
 
Capitulo 04 energía y potencial
Capitulo 04   energía y potencialCapitulo 04   energía y potencial
Capitulo 04 energía y potencial
 
Manual de Radio Mobile
Manual de Radio MobileManual de Radio Mobile
Manual de Radio Mobile
 
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...solucionario mecanica vectorial para ingenieros - beer  & johnston (dinamica)...
solucionario mecanica vectorial para ingenieros - beer & johnston (dinamica)...
 
Modulación
ModulaciónModulación
Modulación
 

Último

Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...GuillermoRodriguez239462
 
Tabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docxTabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docxLuisJJacinto
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxwilliam801689
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEduardoBriones22
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGUROalejandrocrisostomo2
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJOJimyAMoran
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheElisaLen4
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesCarlosMeraz16
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internamengual57
 
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfTIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfssuser202b79
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Dr. Edwin Hernandez
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
Minería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptosMinería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptosisauVillalva
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosRamiroCruzSalazar
 
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdfDISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdfDaysonMillerAvilesAc1
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfwduranteg
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.pptjacnuevarisaralda22
 

Último (20)

Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
Resistencia-a-los-antimicrobianos--laboratorio-al-cuidado-del-paciente_Marcel...
 
Tabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docxTabla de referentes empíricos para tesis-1.docx
Tabla de referentes empíricos para tesis-1.docx
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
nomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestacionesnomenclatura de equipo electrico en subestaciones
nomenclatura de equipo electrico en subestaciones
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión interna
 
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfTIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Minería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptosMinería convencional: datos importantes y conceptos
Minería convencional: datos importantes y conceptos
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx
 
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdfDISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
DISEÑO PAVIMENTOS CLASE 06 PAVIMENTOS.pdf
 
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdfCONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
CONEXIONES SERIE, PERALELO EN MÓDULOS FOTOVOLTAICOS.pdf
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 

Vectores y matrices

  • 1. Vectores y Matrices 1 Objetivos Al finalizar esta actividad, serás capaz de: 1. Escribir la declaración de vectores y matrices de tipos básicos. 2. Escribir el código necesario para recorrer los elementos de vectores y matrices. 3. Escribir el código necesario para acceder a un elemento de un vector o una matriz. 2 Motivación Hasta ahora hemos trabajado con datos elementales (enteros, reales, caracteres; int, float, char) donde podíamos almacenar 1 sólo dato del tipo especificado. En muchas ocasiones es necesario trabajar con gran cantidad de datos de un mismo tipo. Por ejemplo imagina que tienes que hacer un programa donde el usuario es un profesor que quiere almacenar las notas de sus alumnos para posteriormente hacer estadísticas y cálculos como nota máxima, mínima, la media, etc. Podríamos hacerlo declarando una variable de tipo float para cada nota pero eso puede llegar a ser intratable si la cantidad de notas a almacenar fuera muy grande. Además el programa sería muy engorroso y difícil de entender. Con los vectores y las matrices conseguimos, bajo un único nombre, es decir, con una única variable, almacenar tantos valores de un mismo tipo como queramos (según el tamaño que definamos en su declaración). En el ejemplo anterior, tendríamos un vector de float con longitud, por ejemplo 100, donde podríamos almacenar hasta 100 valores reales. 3 Los vectores y las matrices en C 3.1 Vectores Los vectores, también llamados tablas unidimensionales, son tipos de datos compuestos o estructurados caracterizados por: - Todos los elementos del vector son del mismo tipo - Todos los elementos del vector son referenciados con el mismo nombre y la diferencia entre ellos es el índice de la posición que ocupan dentro del vector - Todos sus elementos son almacenados en posiciones de memoria contiguas. El formato general para la declaración de una variable de tipo vector es la siguiente: Tipo_de_datos nombre_del_vector [tamaño_del_vector] Donde: Tipo_de_datos indica el tipo de datos almacenados en la variable vector que se está declarando (int, float, char o cualquier otro tipo definido). Nombre_del_vector indica el nombre de la variable vector que se está declarando. Con este nombre refenciaremos a cada elemento del vector. Tamaño es un entero, o una constante de tipo entero, que indica cuántas posiciones tiene ese vector, es decir, cuál es el número máximo de elementos del tipo Tipo_de_datos que se pueden guardar en la variable Nombre_del_vector que estamos declarando. El tamaño no puede ser una variable. 1
  • 2. Por ejemplo: float notas[100]; Sería la declaración de la variable notas donde podríamos almacenar hasta 100 números reales. Graficamente podríamos representarlo así: notas Para acceder a cada casilla del vector utilizamos un número entero llamado subíndice, que indica la posición del elemento dentro del vector. En C, los elementos empiezan a numerarse en el 0. Así el primer elemento del vector notas será notas sub 0, el segundo notas sub 1, etc., y el último notas sub 99. Fíjate que el último elemento es el que ocupa la posición tamaño_del_vector menos 1. notas 0 1 2 3 99 La sitaxis para acceder a estos elementos en C es la siguiente: notas[0] (primer elemento) notas[1] (segundo elemento) …. notas[99] (último elemento) Operaciones que podemos hacer con un vector a.- Consultar o leer el valor de un elemento del vector Si queremos poner en la variable nota_alu5, la nota del alumno que tenemos en la posición 5 del vector anterior, haríamos la siguiente asignación: float notas[100], nota_alu5; /*Declaración de variables */ ... nota_alu5 = notas[5]; b.- Asignar o escribir un valor en un elemento del vector Si queremos poner un 8 al alumno que está en la posición 5 haríamos la siguiente asignación: notas[5] = 8; En estos dos casos, el acceso al elemento del vector que queremos leer o en el que queremos escribir es directo, porque solamente leemos o modificamos un elemento, el 5 en ambos ejemplos. Si queremos recorrer todo el vector, ya sea para leer como para escribir, tendremos que utilizar un bucle. c.- Recorrido de un vector El bucle más utilizado para recorrer un vector es el for, porque a priori sabemos cuántas vueltas dará el bucle (tantas como elementos del vector a visitar). Mira el siguiente ejemplo: 2
  • 3. #define MAX 20 void main() { float notas[MAX]; int i; for (i=0; i<MAX; i++) { printf(“Dame la nota de la posición %d: “, i); scanf(“%f”, &notas[i]); } } Este programa pide las notas de los alumnos y las almacena en el vector notas. Ejercicio 1: Escribe el anterior programa en el ordenador y verifica con el debugger cómo se van colocando cada valor en su posición correspondiente del vector. Observa como en la pestaña locals aparecen las variables del programa, en este caso la variable i, y la variable notas. Al lado de notas, el símbolo quiere decir que es un tipo compuesto, y clicando encima verás el contenido de cada elemento del vector. 3
  • 4. Inicialmente tienen un valor “raro”, “basura” podríamos decir, porque el programa todavía no le ha puesto ningún valor. En cuanto se introduzcan los valores por teclado verás como se almacenan en cada elemento del vector. Ejercicio 2: Modifica el anterior programa para que una vez introducidos las notas en el vector, muestre por pantalla las notas suspendidas. El programa ha de indicar también en qué posición del vector se encuentra la nota. Es decir los mensajes que se escribirían por pantalla serían del tipo : Posicion 2 Nota 4 para cada nota suspendida que encuentres en el vector. Ejercicio 3: Modifica el anterior programa para que al final diga cuántos suspensos y cuántos aprobados ha habido, y muestre también el porcentaje de ambos. 3.1 Matrices Las matrices, también llamados tablas bidimensionales, son tipos de datos compuestos o estructurados caracterizados por: - Todos los elementos de la matriz son del mismo tipo - Todos los elementos de la matriz son referenciados con el mismo nombre y la diferencia entre ellos son los índices de la posición que ocupan dentro de la matriz El formato general para la declaración de una variable de tipo matriz es la siguiente: Tipo_de_datos nombre_de_la_matriz [número_filas] [número_columnas] Donde: 4
  • 5. Tipo_de_datos indica el tipo de datos almacenados en la variable matriz que se está declarando (int, float, char o cualquier otro tipo definido). Nombre_de_la_matriz indica el nombre de la variable matriz que se está declarando. Con este nombre refenciaremos a cada elemento de la matriz. Número_filas es un entero, o una constante de tipo entero, que indica cuántas filas tiene esa matriz Número_columnas es un entero, o una constante de tipo entero, que indica cuántas columnas tiene esa matriz El número de filas y de columnas no puede ser una variable. Por ejemplo: #define MAX_ASIG 6 /*Definición de las constantes */ #define MAX_ALUM 40 ... float notas[MAX_ASIG][MAX_ALUM]; Sería la declaración de la variable notas donde almacenaríamos todas las notas de los alumnos de cada asignatura. MAX_ASIG y MAX_ALUM serían dos constantes con valores enteros declaradas anteriormente. Graficamente podríamos representarlo así: notas columna fila En este ejemplo la fila indica la asignatura y la columna el alumno. Para acceder a cada elemento de la matriz utilizamos dos números enteros llamados subíndices, que indica la fila y la columna donde se encuentra el elemento dentro de la matriz. En C, los elementos empiezan a numerarse en el 0. Así el primer elemento de la matriz notas será notas[0][0] y el último notas [MAX_ASIG -1][MAX_ALUM – 1]. Si te fijas notarás que es exactamente igual que los vectores, pero con 2 dimensiones (la fila y la columna) en lugar de 1. Operaciones que podemos hacer con una matriz a.- Consultar o leer el valor de un elemento de la matriz Si queremos poner en la variable nota_alu5, la nota del alumno que tenemos en la posición 5 dentro de la asignatura 0, haríamos la siguiente asignación: 5
  • 6. float nota_alu5, notas[MAX_ASIG][NAX_ALUM]; /*Declaración de variables*/ ... nota_alu5 = notas[0][5]; b.- Asignar o escribir un valor en un elemento de la matriz Si queremos poner un 8 en la asignatura 0 al alumno que está en la posición 5 haríamos la siguiente asignación: notas[0][5] = 8; En estos dos casos, el acceso al elemento de la matriz que queremos leer o en el que queremos escribir es directo, porque solamente leemos o modificamos un elemento, el fila 0, columna 5 en estos ejemplos. Si queremos recorrer toda la matriz, ya sea para leer como para escribir, tendremos que utilizar un bucle. c.- Recorrido de una matriz Al igual que para recorrer un vector, para recorrer una matriz, el bucle más utilizado para recorrer es el for, porque a priori sabemos cuántas vueltas dará el bucle (tantas como elementos de la matriz a visitar). Podemos recorrer la matriz por filas o por columnas. La manera de hacerlo dependerá del ejercicio. En el siguiente ejemplo se piden las notas por teclado haciendo un recorrido por filas, pidiendo consecutivamente las notas de todos los alumnos de cada asignatura: #define MAX_ASIG 6 #define MAX_ALUM 40 void main() { float notas [MAX_ASIG][MAX_ALUM]; int i,j; for (i=0; i<MAX_ASIG; i++) /*Para cada asignatura (para cada fila)*/ { printf(“Dame las notas de la asignatura %d: “, i); for(j=0; j<MAX_ALUM; j++) /* Para cada alumno de cada asignatura (para cada columna de cada fila) */ { printf(“Nota del alumno %d:”, j); scanf(“%f”, &notas[i][j]); } } } Escribe el anterior código en el ordenador y comprueba con el debugger como se van alamacenando los valores que introduces por teclado dentro de la matriz notas. Igual que con los vectores verás en el apartado Locals la variable notas de tipo matriz de float. Al lado encontrarás el símbolo . Al clicar verás que se desplega y apareceen las filas de la matriz: 6
  • 7. En este caso hay 6 filas. Si clicas en el símbolo de alguna fila podrás ver todas las columnas de dicha fila: En este ejemplo, el elemento de la matriz seleccionado, el que está con fondo negro, es el notas[0][4]. 7
  • 8. Habrás observado que ejecutar el programa anterior paso a paso es un poco pesado porque los bucles dan muchas vueltas. Cuando estamos es fase de pruebas, conviene probar con tamaños pequeños de vectores y matrices hasta que estemos seguros que el programa funciona correctamente. Entonces lo ejecutaremos con los tamaños reales. Fíjate lo fácil que es cambiar los tamaños para hacer pruebas. Simplemente tienes que cambiar los valores de las constantes definidas con los #define (el resto de código se queda igual). Ejercicio 4: Amplia el programa anterior para que al final muestre por pantalla las notas del alumno 3 en todas sus asignaturas. Para probarlo utiliza valores más pequeños de MAX_ASIG y MAX_ALUM. Ejercicio 5: Modifica el anterior programa para que en lugar de solo mostrar las notas del alumno 3, muestre las notas de todos los alumnos, indicando primero el alumno y después las notas de cada asignatura. Es decir: Notas del alumno 0: Asignatura 0 Nota 5,6 Asignatura 1 Nota 9,2 … etc Ejercicio 6: Amplia el programa del ejercicio 5 para almacenar en otra variable de tipo vector la nota media de las asignaturas de cada alumno y las muestre por pantalla. Los mensajes serían del estilo: La nota media del alumno 0 es 6,9 La nota media del alumno 1 es 5,9 … etc 4. Error común El error más común al trabajar tanto con vectores como con matrices es lo que se suele llamar “pasarse del rango del vector”, es decir, acceder a un elemento que no pertenece el vector. Ilustraremos esto con un ejemplo: #define MAX 10 void main() { float notas[MAX]; int i; for (i=0; i<=MAX; i++) { printf(“Dame la nota de la posición %d: “, i); scanf(“%f”, &notas[i]); } } Ejercicio 7: Escribe el anterior código en el ordenador y ejecútalo paso a paso con el debugger. Este sería el aspecto después de 1 iteración, observa como i vale 1 y hemos introducido un 6 en notas[0]. 8
  • 9. Ejecútalo hasta el final y di ¿Qué valor tiene la variable i al salir del bucle? ¿Cuántos valores hemos introducido en total? ¿Funciona correctamente? ¿Por qué? ¿Cómo lo arreglarías? Ejercicio 8. Escribe un programa que dado un vector de caracteres de tamaño 100, diga cuántas veces aparece la letra a. Las letras en el vector ya están introducidas y el último carácter es el ‘.’. Para declarar un vector de caracteres y asignarle una frase acabada en un ‘.’ puede hacer lo siguiente: char frase [80] = “Esta es la frase.” Ahora puedes acceder a las posiciones del vector tal y como has visto antes para el caso de los float. Ejercicio 9. Escribe un programa que dada una matriz cuadrada (tantas filas como columnas) de enteros, almacene en otra variable de tipo matriz de enteros, la transpuesta de la primera. La matriz transpuesta se obtiene cambiando filas por columnas. Ejercicio 10. Escribe un programa que dada una matriz de enteros, construya un vector en el que cada posición contenga el máximo de todos los valores que hay en la fila correspondiente de la matriz. Por ejemplo, en la posición 7 del vector debe quedar el valor mayor de entre todos los que hay en la fila 7 de la matriz (posiciones [7][0], [7][1], [7][2], etc.). 9
  • 10. Ejecútalo hasta el final y di ¿Qué valor tiene la variable i al salir del bucle? ¿Cuántos valores hemos introducido en total? ¿Funciona correctamente? ¿Por qué? ¿Cómo lo arreglarías? Ejercicio 8. Escribe un programa que dado un vector de caracteres de tamaño 100, diga cuántas veces aparece la letra a. Las letras en el vector ya están introducidas y el último carácter es el ‘.’. Para declarar un vector de caracteres y asignarle una frase acabada en un ‘.’ puede hacer lo siguiente: char frase [80] = “Esta es la frase.” Ahora puedes acceder a las posiciones del vector tal y como has visto antes para el caso de los float. Ejercicio 9. Escribe un programa que dada una matriz cuadrada (tantas filas como columnas) de enteros, almacene en otra variable de tipo matriz de enteros, la transpuesta de la primera. La matriz transpuesta se obtiene cambiando filas por columnas. Ejercicio 10. Escribe un programa que dada una matriz de enteros, construya un vector en el que cada posición contenga el máximo de todos los valores que hay en la fila correspondiente de la matriz. Por ejemplo, en la posición 7 del vector debe quedar el valor mayor de entre todos los que hay en la fila 7 de la matriz (posiciones [7][0], [7][1], [7][2], etc.). 9