Matrices

Solo disponible en BuenasTareas
  • Páginas : 5 (1157 palabras )
  • Descarga(s) : 0
  • Publicado : 29 de agosto de 2012
Leer documento completo
Vista previa del texto
MATRICES

Una matriz es un vector de vectores o un también llamado array bidimensional. La manera de declarar una matriz es c++ es similar a un vector:
1 | int matriz[fils][cols]; |
int es el tipo de dato, matriz es el nombre del todo el conjunto de datos y debo de especificar el numero de filas y columnas. Las matrices también pueden ser de distintos tipos de datos como char, float,double,etc.
Las matrices en c++ se almacenan al igual que los vectores en posiciones consecutivas de memoria. Usualmente uno se hace la idea que una matriz es como un tablero. Pero internamente el manejo es como su definicion lo indica, un vector de vectores, es decir, los vectores estan uno detras del otro juntos.
La forma de acceder a los elementos de la matriz es utilizando su nombre e indicando los2 subindices que van en los corchetes. Si Coloco int matriz[2][3]=10; //estoy asignando al cuarto elemento de la tercera fila el valor 10. No olvidar que tanto filas como columnas se enumeran a partir de 0.
Bueno y para recorrer una matriz podemos usar igualmente un bucle. En este caso 2 for
1 | for(int i=0;i<fils;i++){ |
2 |   for(int j=0;j<cols;j++){ |

3 |     matriz[i][j] = i %j; |
4 |   } |

5 | } |
MATRICES DINÁMICAS
Para crear una matriz dinámica debemos de crear un doble puntero int **pm y samos al igual que los vectores el operador new para reservar memoria y delete para liberar.
Primero tenemos que crear el vector que contendrá a otros vectores especificando el numero de vectores que tendra este vector principal. Ejem:
1 | pm = new int* [fils];//creo elvector de punteros principal |
2 | for(int i=0;i<fils;i++){ |

3 |   pm[i] = new int [cols];//para crear los vectores dentro del vector principal |
4 | } |
Ahora sí vamos al grano y veamos un simple programa que crea una matriz dinámica, asigna valores, muestra el contenido de cada uno de los elementos los elementos así como sus direcciones de memoria.
También mostramos la matrizusando aritmética de punteros,ahí va:
01 | #include <iostream> |
02 | using namespace std; |

03 |   |
04 | int main() |

05 | { |
06 |   int **pm;//puntero a una matriz |

07 |   int fils,cols; |
08 |   |

09 |   cout << "Ingresa el nro de filas: "; |
10 |   cin >>fils; |

11 |   |
12 |   cout << endl; |

13 |   cout << "Ingresa el nro decolumnas: "; |
14 |   cin >>cols; |

15 |   |
16 |   pm = new int* [fils]; |

17 |   for(int i=0;i<fils;i++){ |
18 |     pm[i] = new int [cols]; |

19 |   } |
20 |   |

21 |   cout << "Elementos de la Matriz con sus direcciones" << endl; |
22 |   for(int i=0;i<fils;i++){ |

23 |     for(int j=0;j<cols;j++){ |
24 |       pm[i][j] = i + j; |25 |       cout << pm[i][j] << "--> "; |
26 |       cout << &pm[i][j] << " "; |

27 |     } |
28 |     cout << endl; |

29 |   } |
30 |   cout << endl; |

31 |   |
32 |   cout << "La matriz con aritmetica de punteros" << endl; |

33 |   for(int i=0;i<fils;i++){ |
34 |     for(int j=0;j<cols;j++){ |

35 |      *(*(pm+i)+j) = i + j;//aritmetica de punteros |
36 |       cout << *(*(pm+i)+j) << "-->"; |

37 |       cout << &pm[i][j] << " "; |
38 |     } |

39 |     cout << endl; |
40 |   } |

41 |   |
42 |   for(int i=0;i<fils;i++){ |

43 |     delete[] pm[i];//elimino cada vector de la matriz |
44 |   } |

45 |   delete[] pm;//elimino el vectorprincipal |
46 |   return 0; |

47 | } |
La salida del programa:
Ingresa el nro de filas: 6
Ingresa el nro de columnas: 4
01 | //Elementos de la Matriz con sus direcciones |
02 | 0–> 0×3d2c90 1–> 0×3d2c94 2–> 0×3d2c98 3–> 0×3d2c9c |

03 | 1–> 0×3d2ca8 2–> 0×3d2cac 3–> 0×3d2cb0 4–> 0×3d2cb4 |
04 | 2–> 0×3d2cc0 3–> 0×3d2cc4 4–> 0×3d2cc8 5–>...
tracking img