49. C++ || Arrays bidimensionales
Lo que hemos visto hasta ahora se conoce como arrays unidimensionales que como su nombre lo indica, son de una dimensión. Estos tienen sólo un índice y también son conocidos como listas.
Ahora veremos los arrays bidimensionales (dos dimensiones) y que por consiguiente tendrán dos índices. Este tipo de array es bastante usado y también se conocen como tabla o matriz. Sin embargo, nosotros podemos crear un array con tantas dimensiones como queramos y de esta manera hacer un array multidimensional. Estos últimos no son tan usuales y por ello no los veremos a fondo, nos vamos a concentrar en las tablas o matrices.
Una representación gráfica de los array de una sola dimensión con los valores 7, 9, 1, 0, 12, 50 se vería de la siguiente manera:
Ahora, una array con dos dimensiones tiene una estructura diferente, donde debemos tomar en cuenta las filas y las columnas. Por ejemplo, creamos un array de nombre matriz y lo declaramos con las siguientes dimensiones:
int matriz[4][3];
En este arreglo podemos ingresar números de tipo entero, pero ya no será una lista. Ahora hay que tomar en cuenta que el máximo de sus elementos viene dado por la multiplicación de la fila y la columna, donde el 4 representa las filas, y el 3 las columnas.
4x3 = 12 que es el número máximo de elementos que podremos agregar en el array. Y su representación gráfica es la siguiente:
Claramente se puede apreciar por qué también se conoce como tabla o matriz. Ahora que ya tenemos la noción de qué es un array bidimensional, toca manipularlo como habíamos hecho anteriormente con los de una dimensión.
Para referenciar los arrays bidimensionales los haremos como si fuesen las coordenadas (x,y) del plano cartesiano. Primero declaramos el array:
tipo nombreArray [numeroDeFilas] [numeroDeColumnas];
Donde:
- Tipo. Es cualquier tipo de dato, bien sea uno proporcionado por C++, o uno creado por el usuario con una estructura o una clase.
- nombreArray. Es cualquier nombre permitido por C++ que se le quiera poner al array.
- numeroDeFilas. Es la cantidad máxima de filas que tendrá el array.
- numeroDeColumnas. Es la cantidad máxima de columnas que tendrá el array.
Y la cantidad máxima de elementos que almacenará el array viene dada por la formula:
cantidadMaxima = numeroDeFilas x numeroDeColumnas
Las siguientes son algunas declaraciones correctas de una array bidimensional:
char lista[5][5]; int estudiantes[3][25]; float ingresos[10][5]; int matriz[4][3];
Nota: Es muy importante que cada dimensión del array esté encerrada dentro de corchetes. Lo siguiente produciría un error:
int errorArray[25, 10];
No es válido.
Un array bidimensional se puede ver como un array unidimensional puesto sobre otro sucesivamente.
Inicialización de array bidimensionales
Al igual que los arrays unidimensionales, los arrays bidimensionales se pueden inicializar al momento de ser declarados. La inicialización consta de una lista constante separadas por comas y encerradas dentro de llaves. Ejemplo:
int ejemploArryaBidimensional [2][3] = {1, 2, 3, 7, 8, 9};
O también se pueden inicializar de las siguientes maneras:
int ejemploArryaBidimensional [2][3] = { {1,2,3},{7,8,9} }; int ejemploArryaBidimensional [2][3] = { {1,2,3}, {7,8,9} }; int ejemploArryaBidimensional [2][3] = { {1,2,3}, {7,8,9} };
Acceso a los elementos de un array bidimensional
Para acceder a los elementos de un array bidimensional seguimos los mismo pasos que con los arrays unidimensionales con la diferencia de que ahora hay que especificar los índices de la fila y la columna. La asignación directa de valores a los elementos es:
Inserción de elementos
nombre del Array[índice de fila] [índice de columna] = valor del elemento;
Extracción de elementos
variable = nombre del Array[índice de fila] [índice de columna];
Ejemplos de inserción de elementos
tabla[2][3] = 4.5; estudiante[1][15] = 10; asientosLibres[7][10];
Ejemplos de extracción de elementos
ventas = año[1][27]; dia = semana[3][6]; notas = estudiante[1][15];
Lectura y escritura de los elementos de arrays bidimensionales
Para esto usamos los objetos cin y cout que hemos visto hasta ahora. Por ejemplo, para leer datos:
cin>>estudiante[1][15]; cin>>ventas[3][2]; cin>>año[7][22];
Y para mostrar datos en pantalla:
cout<<gtestudiante[1][15]; cout<<ventas[3][2]; cout<<año[7][22];
Acceso a los elementos de un array bidimensional con bucles
La forma más común y eficaz de leer o mostrar elementos de un array bidimensional es utilizando bucles anidados. La sintaxis general es:
for(int indiceFila = 0; indiceFila < numeroDeFilas; indiceFila++){ for(int indiceColumna = 0; indiceColumna < numeroDeColumnas; indiceColumna++){ //Procesar los elementos del array ejemploArryaBidimensional[indiceFila][indiceColumna]; // cin o cout } }
Veamos un ejemplo para finalizar donde vamos a ingresar datos en un array y luego los vamos a mostrar en pantalla.
#include <iostream> using namespace std; int main(){ float ventas[2][3]; int fila, columna; for(fila = 0; fila < 2; fila++){ for(columna = 0; columna &l 3; columna++){ cin>>ventas[fila][columna]; } } for(fila = 0; fila < 2; fila++){ for(columna = 0; columna &l 3; columna++){ cout<<ventas[fila][columna]<<endl; } } return 0; }
LLene dos vectores de 10 elementos de tipo entero. Realice la suma del primer elemento del vector A con le primer elemento del vector B, y así hasta llegar al último elelemto de los dos arreglos y guarde el resulado en una Matriz 20 por 20. Imprimir el resultado.....Alguien me ayuda por favor
ResponderEliminarmatriz de 20 x 20? para que si solo te daran 20 resultados, osea minimo una matriz de 4x5
Eliminarint matz1[10],matz2[10],suma[10];
Eliminarcout<<" \n Llenando el vector 1"< ";cin>>matz1[i];
}
cout<<" \n Llenando el vector 2"< ";cin>>matz2[i];
}
cout<<" Mostrando la suma de los vectores: "<<endl;
for (int i=0;i<10;i++){
fflush(stdin);
suma[i] = matz1[i] + matz2[i];
}
for (int i=0;i<10;i++){
cout<<"matz1["<<i<<"] + matz2["<<i<<"] = ["<<suma[i]<<"]"<<endl;
}
getch();
return 0;
no se puede pasar bien no se por que
ResponderEliminarUsar la tabla siguiente y escribir los algoritmos para cada caso:
ResponderEliminarArticulo
0
Articulo
1
Articulo
2
Articulo
3 NAE
Almacen 0 30 50 0 25 105
Almacen 1 0 29 20 65 114
Almacen 2 10 0 17 45 72
a) Calcular que artículos están agotados en el almacén 1.
b) En cualquiera de los almacenes, cual es el artículo que esta agotado (debe indicar el
número de almacén y del artículo)
ayuda porfa
Represente una Persona con sus nombres y apellidos, ingrese 5 personas en un arreglo y verifique cuales de ellas son Homónimas (Personas diferentes que tienen exactamente los mismos nombres y apellidos) talvez un programa en c++
ResponderEliminarHola me podrias ayudar con este ejercicio lo he estado haciendo pero solo me imprime la matriz, necesito codificar un programa que dada una matriz [m][n] la almacene en :
ResponderEliminara) un vector1 de la forma[fila1,fila2,fila3...]
b)un vector2 de la forma [columna1,columna2,columna3...]
por ejemplo:
7 8 9
4 5 2
1 0 8
vector1=[7,8,9,4,5,2,1,0,8]
vector2=[7,4,1,8,5,0,9,2,8]
SI VAN A SUBIR SUS PINVJHE S CODIGOS MINIMO VERIFIQUEN QUE EJECUTE PEDAZOS DE MIERDA
ResponderEliminar