Beruflich Dokumente
Kultur Dokumente
Nombre de la Practica:
Lugar de Ejecucin:
Estimado:
MATERIA:
I. OBJETIVOS
Los arreglos en C/C++ pueden tener mltiples subndices. Un uso comn de los arreglos con mltiples
subndices es representar tablas de valores que consisten en informacin organizada en filas y columnas. Para
identificar un elemento en especial de una tabla, debemos especificar dos subndices: el primero identifica la fila del
elemento, y el segundo identifica la columna del elemento.
Las tablas o arreglos que requieren dos ndices para identificar un elemento en particular se llaman arreglos con
doble subndice. Observe que los arreglos con mltiples subndices pueden tener ms de dos subndices. En la
siguiente figura se muestra el arreglo a con doble subndice.
Fila 0
Fila 1
Fila 2
Columna 0
a[0][0]
a[1][0]
a[2][0]
Columna 1
a[0][1]
a[1][1]
a[2][1]
Columna 2
a[0][2]
a[1][2]
a[2][2]
Columna 3
a[0][3]
a[1][3]
a[2][3]
Subndice de columna
Subndice de Fila
Nombre del arreglo
Figura 1
Este arreglo contiene tres filas y cuatro columnas, de manera que se dice que es un arreglo de 3 por 4, en general
un arreglo con m filas y n columnas se llama arreglo de m por n as:
Cada elemento del arreglo a se identifica en la figura con el nombre del elemento de la forma a[i][j] tal como se
hacia con los vectores a[i].
Introduccin a la Programacin
Observe que los elementos en la primera fila tienen un primer subndice 0; los nombres de los elementos en la
cuarta columna tienen un segundo subndice 3.
Los lenguajes como C y C++, permiten que el programador declare matrices de cualquier tipo y prcticamente de
cualquier tamao. En el seudolenguaje, un matriz se declara usando el siguiente formato:
<TIPO> <NOMBRE> [<N>][<M>]
En este formato aparecen en maysculas y entre los caracteres < y > los componentes que el programador puede
determinar. As por ejemplo, si se quiere declarar una matriz con nombre matriz, de dimensin 15x4 y que pueda
almacenar datos de tipo caracter, se debe escribir la siguiente lnea.
char matriz [15][4];
Otros ejemplos:
int nmeros[2][3];
int numeros2[4][2]= {{1,2,3,1},{2,3,4,1}};
Para referenciar a cada posicin de R, ser necesario indicar 2 nmeros ndices (uno para cada dimensin). Si desea
guardar el valor 6.241 en la posicin indicada por la X de la figura 2, deber hacerlo con esta instruccin:
R [ 2 ] [ 5 ] = 24.13;
R [ 1 ] [ 3 ] = 6.241;
Ejemplos:
Deseo declarar arreglo bidimensional llamado R que almacene datos tipo double, y que tenga 6 (primera
dimensin) por 4 (segunda dimensin) elementos, es decir, un total de (6x4) = 24 elementos. Para lograrlo basta
esta instruccin:
double R[6][4];
0 1 2 3 4 5
0
1
2
3
Requerimiento
Cantidad
Introduccin a la Programacin
#include<iostream>
#include<conio.h>
using namespace std;
main(){
//variables para uso ciclos e indices de una matriz
int fil,col; //contador filas y columnas
//declaracion e inicilizacion de valores de
//una matriz
float n[3][4]={
{1,2,3,4},
{0,0,0,0},
{0,0,0,0},
};
//impresion de contenido actual de matriz
cout<<"Matriz n[3][4] contiene actualmente estos valores:";
for(fil=0;fil<3;fil++){ //recorre cada fila
//accede a cada columna de fila(fil) actual
cout<<endl<<"fila "<<fil<<": ";
for(col=0;col<4;col=col+1){
cout<<n[fil][col]<<"\t";
}//fin for col
}//fin for fil
getch();
//inicializacion de matriz por usuario
cout<<endl<<endl<<"Ingrese valores de fila 2 de matriz:";
//recorre elementos de fila 3
col=0; //columna 0
do{
cout<<endl<<"Valor de posicion (1,"<<col<<")?? ";
cin>>n[1][col];
col++;//incrementa contador columnas
}while(col<4);
//imprime nuevamente contenido matriz
cout<<endl<<"Matriz n[3][4] contiene ahora estos datos:";
for(fil=0;fil<3;fil++){ //recorre cada fila
//accede a cada columna de fila(fil) actual
cout<<endl<<"fila "<<fil<<": ";
for(col=0;col<4;col=col+1){
cout<<n[fil][col]<<"\t";
}//fin for col
}//fin for fil
Introduccin a la Programacin
getch();
}//fin main
Ejemplo 2. Programa que usa una matriz para simular por medio de matrices a los registros de precios de varios
productos, clasificados por categoras.
#include <iostream>
#include <conio.h>
using namespace std;
/* Programa para obtener los precios de 3 categorias de productos y 9
productos. Ademas generador de menu */
#define CAT 3
#define FIL 3
#define COL 3
void main(){
//Nombres de Categorias de productos
char * categorias[CAT]={"Lamparas","Diversion en hogar","Informatica"};
//Nombres de productos
char * nombres[FIL][COL] = {
{"De Cristal","Unidad DVD","Disco Duro"},
{"De Plastico","TV plasma","memoria USB"},
{"De Barro","VHS","Quemador DVD"}};
//Precios de productos
float precios[FIL][COL]= {
{20,152.4,75.2},
{10.45,243.6,12.5},
{9.34,89,26}
};
int i, j,k,l,op,op1; //Variable de proceso
//Generando el menu de Categoras de productos
cout<<"Emulacion de base de datos"<<endl<<endl;
cout<<"REGISTRO DE PRECIOS DE PRODUCTOS"<<endl;
cout<<endl<<"Presione numero de categoria de productos.."<<endl;
for(i=0;i<CAT;i++)
cout<<(i+1)<<"-> Datos de "<<categorias[i]<<endl;
cout<<endl<<"Su opcion es?\t";
cin>>op;
switch(op){
case 1:
case 2:
case 3:
//Menu de precios validos
cout<<endl<<"Detalle de Productos de "<<categorias[op-1]<<endl;
for(j=0;j<FIL;j++){
cout<<j+1<<"=>Precio de "<<nombres[j][op-1]<<endl;
}//fin for j
Introduccin a la Programacin
Ejemplo 3. El siguiente cdigo d e f i n e u n programa que permite crear dos matrices paralelas:
+ la primera (nombres) permitir almacenar el nombre de 2 estudiantes de la materia algebra lineal
+ matriz (notas) almacena 4 notas para cada estudiante. Las primeras 3 notas son notas de periodo y la ultima,
nota final (que se obtiene del 30% de nota 1 y el 35% de cada nota restante).
#include <iostream>
using namespace std;
#include <conio.h>
#include <stdlib.h>
#define tam 2 //total estudiantes
#define tam1 4 //3 notas periodo y prom-final
main(){
float notas[tam][tam1];
char nombres[tam][25];
int i,j,k; //contadores para ciclos y arreglos
i=0; //1er elemento del arreglo nombres[]
cout<<"Programa de registro academico";
while(i<tam){
cout<<endl<<endl<<"Digitar nombres de Estudiante "<<i+1<<": ";
/*CAPTURA UNA CADENA DE CARACTERES CON ESPACIOS*/
cin.getline (nombres[i],25);
notas[i][3]=0;//asigna nota final prom a cero.
for(k=0;k<3;k++){
cout<<endl<<"Ingrese nota de periodo "<<k+1<<" :\t";
cin>>notas[i][k];
Introduccin a la Programacin
}//fin for k
cin.get(); //lee salto de linea
i++; //incremento contador i
}//fin while i
//calcula nota promedio de c/estudiante
i=0;
while(i<tam){
//acumula en posicion notas[i][3] el porcentaje
//de c/nota de periodo
notas[i][3]+=notas[i][0]*0.3;
notas[i][3]+=notas[i][1]*0.35;
notas[i][3]+=notas[i][2]*0.35;
i++;//proximo estudiante
}//fin while i
system("cls");
for(i=0;i<tam;i++){
cout<<endl;
cout<<endl<<"Estudiante
"<<nombres[i]<<"
periodo:"<<endl;
for(k=0;k<tam1-1;k++)
cout<<notas[i][k]<<"\t";
tiene
las
notas
Introduccin a la Programacin
de
1. Hacer un programa que llene una matriz de 4 x 5 y determine la posicin [fila, columna] del nmero menor
almacenado en toda la matriz.
2. Una empresa automotriz tiene cinco agencias y cuenta con la informacin acerca de las ventas mensuales de
automviles logradas el ao pasado por cada una de stas. A partir de estos datos la empresa construy la siguiente
matriz ventas:
Lomas
Vallejo
Perisur
Valle
Oriente
Enero
Febrero
...
Noviembre
Diciembre
Elabore un programa que permita ingresar apropiadamente los valores de la matriz anterior, para que luego
muestre las respuestas a las siguientes preguntas:
a)
b)
c)
d)
3. Escribir un programa que lea una matriz de 4 filas y 3 columnas, la visualice por pantalla y a continuacin
encuentre el mayor y el menor elemento de la matriz y sus posiciones.
Por ejemplo: Matriz de 3 x 3
5
15
Mensajes a retornar:
-12 55
13
-15 12
-8
Introduccin a la Programacin
4.
7306.40
VII. BIBLIOGRAFIA
Deitel, Harvey M. y Deitel, Paul J. CMO PROGRAMAR EN C++. 1ra Edicin. Editorial Mc Graw Hill
Joyanes Aguilar, Lus. PROGRAMACIN EN C++ - ALGORITMOS, ESTRUCTURAS DE DATOS Y
OBJETOS. Editorial McGraw Hill, Espaa, 2000.
Pappas, Chris H. y Murray, William H. MANUAL DE REFERENCIA DE VISUAL C++ 6.0. 4ta Edicin
Editorial Prentice Hall (PEARSON).
Introduccin a la Programacin