• Save
vecma
Upcoming SlideShare
Loading in...5
×
 

vecma

on

  • 3,055 views

 

Statistics

Views

Total Views
3,055
Views on SlideShare
2,930
Embed Views
125

Actions

Likes
4
Downloads
0
Comments
0

5 Embeds 125

http://micursillo.blogspot.com.es 65
http://micursillo.blogspot.com 48
http://competencias-espe.wikispaces.com 10
http://www.slideshare.net 1
http://micursillo.blogspot.com.ar 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    vecma vecma Presentation Transcript

    • Tema 5: Vectores y matrices
    • Tema 5: Vectores y matrices Introducción
      • Una variable permite almacenar un solo valor de un tipo de datos concreto (entero, real, carácter)
        • int x;
      • Un vector permite almacenar N valores del mismo tipo de datos (entero, real, carácter)
        • int x[10];
    • Tema 5: Vectores y matrices Introducción
      • Cada uno de los valores que es capaz de almacenar un vector se denomina elemento
      • La dimensión de un vector es el número de elementos que puede almacenar
      • Para hacer referencia a un determinado elemento del vector utilizamos su índice
      • El primer elemento de un vector tiene índice cero , y el último índice N-1 (donde N es la dimensión del vector)
    • Tema 5: Vectores y matrices Declarar un vector
      • Un vector debe ser declarado como cualquier otra variable. Sintaxis:
        • tipo_datos nombre_vector [dimension];
      • Ejemplos:
        • int x[10]; /* vector de 10 enteros */
        • float edades[30]; /* vector de 30 reales */
        • char nombre[30]; /* vector de 30 caracteres */
    • Tema 5: Vectores y matrices Asignar valores iniciales
      • En el momento de la declaración es posible asignar valores a sus elementos:
        • int digitos[3]={100,200,300};
        • char nombre[4]={‘P’,’E’,’P’,’E’};
      • En este caso, no es obligatorio indicar la dimensión del vector:
        • int digitos[]={100,200,300};
        • char nombre[]={‘P’,’E’,’P’,’E’};
      • Solo puede hacerse en el momento de la declaración del vector
    • Tema 5: Vectores y matrices Lectura y proceso de los elementos de un vector
      • Un vector no puede leerse con una sola instrucción de E/S (scanf):
        • int x[10];
        • scanf(“%d”,&x); /* MAL */
      • Hay que leer elemento a elemento con una estructura de repetición (for, while):
        • int x[10],i;
        • for (i=0;i<10;i++)
        • scanf(“%d”,&x[i]); /* BIEN */
    • Tema 5: Vectores y matrices Lectura y proceso de los elementos de un vector
      • Excepción : Vectores de caracteres
        • char x[10];
        • scanf(“%s”,x); /* BIEN */
        • ó
        • gets(x); /* BIEN */
      • Para procesar sus elementos hay que utilizar una estructura de repetición (for, while):
        • /* suponer ya leido el vector */
        • for (i=0;i<10;i++)
        • x[i]=x[i]+(i*2);
    • Tema 5: Vectores y matrices Lectura y proceso de los elementos de un vector
      • Ejercicio-1
      • Realizar un programa en C que lea un vector de 10 números enteros. Una vez leidos, debe sumar una unidad a sus elementos y visualizar el vector resultante.
    • Tema 5: Vectores y matrices Lectura y proceso de los elementos de un vector
      • Solución
        • #include <stdio.h>
        • void main(){
        • int i,x[10];
        • for (i=0;i<10;i++)
        • {
        • printf(“Dame un elemento: ”);
        • scanf(“%d”,&x[i]);
        • }
        • for (i=0;i<10;i++)
        • {
        • x[i]++;
        • printf(“%d ”,x[i]);
        • }
        • }
    • Tema 5: Vectores y matrices Suma de los elementos de un vector
      • Ejercicio-2
      • Realizar un programa en C que calcule la suma de los elementos contenidos en un vector de 10 números enteros. Una vez calculada la suma, debe visualizarla por pantalla.
    • Tema 5: Vectores y matrices Suma de los elementos de un vector
      • Solución
        • #include <stdio.h>
        • void main(){
        • int i,x[10],suma=0;
        • for (i=0;i<10;i++)
        • {
        • printf(“Dame un elemento: ”);
        • scanf(“%d”,&x[i]);
        • }
        • for (i=0;i<10;i++)
        • suma=suma+x[i];
        • printf(“La suma de los elementos es %d ”,suma);
        • }
    • Tema 5: Vectores y matrices Averiguar valores entre los elementos de un vector
      • Ejercicio-3
      • Realizar un programa en C que averigüe los valores máximo y mínimo de los elementos contenidos en un vector de 10 números enteros. Una vez obtenidos dichos valores, debe visualizarlos por pantalla.
    • Tema 5: Vectores y matrices Averiguar valores entre los elementos de un vector
      • Solución
        • #include <stdio.h>
        • void main(){
        • int i,x[10],mayor,menor;
        • for (i=0;i<10;i++) {
        • printf(“Dame un elemento: ”);
        • scanf(“%d”,&x[i]);
        • }
        • mayor=x[0]; menor=x[0];
        • for (i=1;i<10;i++) {
        • if (x[i]>mayor) mayor=x[i];
        • if (x[i]<menor) menor=x[i];
        • }
        • printf(“El valor mayor es %d ”,mayor);
        • printf(“El valor menor es %d ”,menor);
        • }
    • Tema 5: Vectores y matrices Matrices: Introducción
      • Un vector se caracteriza por tener UNA sola dimensión
        • int vector[5];
      • Una matriz se caracteriza por tener MAS DE UNA dimensión (2,3,...,N)
        • int matriz1[5][3]; /* Dos dimensiones */
        • float temperaturas[24][7][365]; /* Tres dimensiones */
      • En general se asume el término matriz cuando tiene 2 dimensiones.
      • Cuando tiene más de 2 dimensiones se suele denominar matriz n-dimensional o tupla
    • Tema 5: Vectores y matrices Matrices: Introducción
      • Un vector es capaz de almacenar tantos elementos del mismo tipo de datos como indica su dimensión
        • int vector[5]; /* 5 números enteros */
      • Una matriz es capaz de almacenar tantos elementos como indica el producto de sus dimensiones
        • int matriz1[5][3]; /* 5x3=15 números enteros */
        • float temperaturas[24][7][365];/* 24x7x365=61320 reales */
      • Tanto un vector como una matriz almacenan en memoria todos sus valores de forma secuencial (uno detrás de otro)
    • Tema 5: Vectores y matrices Matrices: Caracterización
      • A nivel lógico un vector es un conjunto de casillas, y es posible almacenar cada valor de forma independiente en cada una de ellas
        • int vector[5]; /* 5 números enteros */
      3 7 -5 10 -20
    • Tema 5: Vectores y matrices Matrices: Caracterización
      • A nivel lógico una matriz es igualmente un conjunto de casillas, y es posible almacenar cada valor de forma independiente en cada una de ellas, pero se distribuyen de forma lógica en filas y columnas
        • int matriz[3][5]; /* 3 filas x 5 columnas = 15 elem. */
      3 7 -5 10 -20 6 1 0 15 -3 8 7 -8 20 6
    • Tema 5: Vectores y matrices Matrices: Dimensiones
      • La primera dimensión de una matriz indica el número de filas
        • int matriz[ 3 ][5]; /* 3 filas x 5 columnas = 15 elem. */
      3 7 -5 10 -20 6 1 0 15 -3 8 7 -8 20 6 Fila 1 Fila 2 Fila 3
    • Tema 5: Vectores y matrices Matrices: Dimensiones
      • La segunda dimensión de una matriz indica el número de columnas
        • int matriz[3][ 5 ]; /* 3 filas x 5 columnas = 15 elem. */
      3 7 -5 10 -20 6 1 0 15 -3 8 7 -8 20 6 Col-1 Col-2 Col-3 Col-4 Col-5
    • Tema 5: Vectores y matrices Matrices: Referencia a celdas
      • Para referenciar una casilla ( elemento ) concreta de un vector hacemos uso de un índice
        • vector[i] /* i varía entre 0 y NUM_ELEMENTOS-1 */
      • Para referenciar una casilla ( celda ) concreta de una matriz debemos utilizar dos índices : un índice para indicar la fila y otro para indicar la columna
        • matriz1[i][j]; /* i varía entre 0 y NUM_FILAS-1 */
        • /* j varía entre 0 y NUM_COLUMNAS-1 */
    • Tema 5: Vectores y matrices Matrices: Referencias
      • Ejemplo: ¿Cuál es la referencia de la celda que se encuentra en la fila 2 y columna 3? ¿Y su valor?
        • Fila=2 -> Indice=1
        • Columna=3 -> Indice=2
        • matriz[1][2] contiene el valor 0
      3 7 -5 10 -20 6 1 0 15 -3 8 7 -8 20 6 Fila 2 Indice 1 Col 3, Indice 2
    • Tema 5: Vectores y matrices Matrices: Lectura de las celdas
      • Para leer un vector es necesario hacerlo elemento a elemento con un bucle
        • int vector[NUM_ELEMENTOS],i;
        • .../...
        • for (i=0; i<NUM_ELEMENTOS; i++)
        • {
        • printf(“Dame un elemento:”);
        • scanf(“%d”,&vector[i]);
        • }
      • En cada iteración del bucle se lee un elemento
    • Tema 5: Vectores y matrices Matrices: Lectura de las celdas
      • Para leer una matriz es necesario hacerlo celda a celda con un bucle dentro de otro
        • int matriz[NUM_FILAS][NUM_COLUMNAS],i,j;
        • .../...
        • for (i=0; i<NUM_FILAS; i++)
        • for (j=0; j<NUM_COLUMNAS; j++)
        • {
        • printf(“Dame una celda:”);
        • scanf(“%d”,&matriz[i][j]);
        • }
      • En cada iteración del bucle interno se lee una celda
      • En cada iteración del bucle externo se lee una fila
    • Tema 5: Vectores y matrices Matrices: Lectura de las celdas
      • El bucle externo (i) se encarga de procesar una fila completa de la matriz en cada iteración
          • for (i=0; i<NUM_FILAS; i++)
      • El bucle interno (j) se encarga de leer todas las celdas de una fila concreta
          • for (j=0; j<NUM_COLUMNAS; j++)
        • {
        • printf(“Dame una celda:”);
        • scanf(“%d”,&matriz[i][j]);
        • }
      • Las distintas combinaciones de i y j terminan leyendo todas las celdas de la matriz
    • Tema 5: Vectores y matrices Matrices: Lectura de las celdas
      • Ejercicio
      • Diseñar un trozo de programa que permita leer las celdas de una matriz de enteros utilizando bucles while en vez de bucles for
    • Tema 5: Vectores y matrices Matrices: Lectura de las celdas
      • Solución
      • #define NUM_FILAS 3
      • #define NUM_COLUMNAS 5
      • ...
      • int m[NUM_FILAS][NUM_COLUMNAS], i, j;
      • i=0;
      • while (i<NUM_FILAS)
      • {
      • j=0;
      • while (j<NUM_COLUMNAS)
      • {
      • printf(“Dame una celda:”);
      • scanf(“%d”,&m[i][j]);
      • j++;
      • }
      • i++;
      • }
    • Tema 5: Vectores y matrices Matrices: Lectura de las celdas
      • Ejercicio
      • Realizar un programa que lea una matriz de 5 filas y 4 columnas de números enteros y calcule la suma y la media de todos sus elementos
    • Tema 5: Vectores y matrices Matrices: Lectura de las celdas
      • Solución
      • #include <stdio.h>
      • #define NUM_FILAS 5
      • #define NUM_COLUMNAS 4
      • void main() {
      • int m[NUM_FILAS][NUM_COLUMNAS], i, j;
      • float suma;
      • suma=0.0;
      • for (i=0; i<NUM_FILAS; i++)
        • for (j=0; j<NUM_COLUMNAS; j++)
        • {
        • printf(“Dame una celda:”);
        • scanf(“%d”,&m[i][j]);
        • suma=suma+m[i][j];
        • }
      • printf(“La suma es %f y la media es %f”,suma, suma/(NUM_FILAS*NUM_COLUMNAS));
      • }
    • Tema 5: Vectores y matrices Matrices: Proceso de las celdas
      • Ejercicio
      • Realizar un programa que lea una matriz de 5 filas y 4 columnas de números enteros y calcule la matriz traspuesta.
      • La traspuesta de una matriz tiene intercambiadas las filas por las columnas.
    • Tema 5: Vectores y matrices Matrices: Proceso de las celdas
      • Solución
      • #include <stdio.h>
      • #define NFORI 5
      • #define NCORI 4
      • #define NFTRA 4
      • #define NCTRA 5
      • void main() {
      • int m[NFORI][NCORI], mt[NFTRA][NCTRA],i, j;
      • for (i=0; i<NFORI; i++)
        • for (j=0; j<NCORI; j++)
        • {
        • printf(“Dame una celda:”);
        • scanf(“%d”,&m[i][j]);
        • mt[j][i]=m[i][j];
        • }
      • for (i=0; i<NFTRA; i++){
        • for (j=0; j<NCTRA; j++) printf(“%d “,mt[i][j]);
        • printf(“ ”);
        • }
      • }
    • Tema 5: Vectores y matrices Matrices: Proceso de las celdas
      • Ejercicio
      • Realizar un programa que lea una matriz de 3 filas y 2 columnas de números enteros nos indique cuantos números pares e impares hay en la matriz (el numero 0 se considera par)
    • Tema 5: Vectores y matrices Matrices: Proceso de las celdas
      • Solución
        • #include <stdio.h>
        • #define N 3 /* Numero de fila se la matriz */
        • #define M 2 /* Numero de columnas de la matriz */
        • int main() {
        • int m[N][M]; /* Matriz de enteros de N filas y M columnas */
        • int i,j; /* Indices de fila/columna para la matriz */
        • int npar=0; /* Contador de numeros pares */
        • int nimpar=0; /* Contador de numeros impares */
        • /* Leo los elementos de la matriz */
        • for (i=0;i<N;i++)
        • for (j=0;j<M;j++)
        • {
        • printf(&quot;Dame un elemento: &quot;);
        • scanf(&quot;%d&quot;,&m[i][j]);
        • }
    • Tema 5: Vectores y matrices Matrices: Proceso de las celdas
      • Solución (sigue)
      • /* Visualizo la matriz original */
        • printf(&quot; Matriz original: &quot;);
        • for (i=0;i<N;i++){
        • for (j=0;j<M;j++) printf(&quot;%3d&quot;,m[i][j]);
        • printf(&quot; &quot;);
        • }
        • /* Calculo cuantos pares e impares tiene la matriz */
        • for (i=0;i<N;i++)
        • for (j=0;j<M;j++)
        • if (m[i][j]%2==0) npar++;
        • else nimpar++;
        • /* Visualizo los resultados */
        • printf(&quot;Numeros pares: %d &quot;,npar);
        • printf(&quot;Numeros impares: %d &quot;,nimpar);
        • printf(&quot;Total numeros: %d &quot;,npar+nimpar);
        • return 0;
        • }