.: Men� :.

Made in Ecuador
:: Home :.
:: Programaci�n :.
 Introducci�n
 Soluci�n de un problema
 Objetivos de la Programaci�n
 Herramientas para Programar
 Programaci�n Estructurda
 Otras T�cnicas
:: Principiante :.
 �Que es Turbo Pascal?
 Estructura de un programa
 Declaraci�n de Variables
 Definici�n de Tipos
 Operadores
 Expresiones
 Instrucciones
 Procedimientos Entrada/Salida
 Mi primer Programa
 Ejercicios Propuestos
:: Medio :.
:: Estructuras de Control :.
   :: Selecci�n :.
 If...Then...Else
 Case...of...Else
   :: Bucles :.
 While...Do
 Repeat...Until
 For...to...Do
:: Tipos Estructurados :.
 Cadenas
 Vectores
 Matrices
 Registros
 Ejercicios Propuestos
:: Avanzado :.
 Archivos
 Punteros
 Modo Grafico
 Modo Print
 Ejercicios Propuestos
:: Experto :.
 Librerias
 Compiladores
 Manejo de Puertos LPT
 Base de Datos en Codigo
 Ejercicios Propuestos
:: Varios :.
 Codigo Fuente
 Resultado Ejercicios Propuestos
 Autor Pagina Web

Enviame un e-mail



Matrices y Arreglos Multidimensionales.

Arrays bidimensionales (tablas) Un array bidimensional (tabla o matr�z) es un array con dos �ndices, al igual que los vectores que deben ser ordinales o tipo subrango.

Para localizar o almacenar un valor en el array se deben especificar dos posiciones (dos sub�ndices), uno para la fila y otro para la columna. Formato: identificador = array [�ndice1, indice 2] of tipo de elemento identificador = array [ �ndice 1 ] of array [ indice 2 ] of tipo de elemento Supongase que se desea almacenar las calificaciones de 5 alumnos obtenidas en 3 examenes y mostrar en orden ascendente sus promedios respectivamente. En este caso se usar� un array bidimensional (tabla o matr�z) de 5 filas y 4 columnas en la cual se almacenar� las calificaciones de 3 examenes en 3 columnas y la cuarta columna se utilizar� para almacenar su promedio respectivo, adem�s de un array unidimensional (vector) donde en forma paralela se almacenar�n los nombres de los alumnos de la siguiente forma :

Ejemplo: Program Matriz_Vector; {El siguiente programa captura las calificaciones de 5 alumnos en 3 examenes, y despliega en pantalla los promedios ordenados en forma descendente } Uses Crt; Const MaxAlumno = 5; MaxExamen = 4;{Columna 4 almacena el promedio} Var Alumno :array[1..MaxAlumno] of string[10]; examen :array[1..MaxAlumno,1..MaxExamen] of real; aux_examen :array[1..MaxExamen] of real; {reserva 20 posiciones de memoria de datos reales : 5 filas por 4 columnas} promedio :real; aux_alumno :string [10]; i,j,col,ren :byte; begin ClrScr; {lectura de arrays paralelos de manera simult�nea} gotoxy(5,5);Write('Nombre'); gotoxy(20,5);Write('Examen1 Examen2 Examen3 Promedio'); col:=5;ren:=6; for i:=1 to MaxAlumno do begin gotoxy(col,ren); ReadLn(alumno[i]); {lectura de vector} col:=22;promedio:=0; for j:=1 to MaxExamen-1 do begin gotoxy(col,ren); ReadLn(examen[i,j]); {lectura de matr�z} promedio:=promedio+examen[i,j]; col:=col+10 end; examen[i,j+1]:=promedio/3; gotoxy(col,ren);Write(promedio/3:3:2); inc(ren); col:=5 end; {ordenaci�n} for i:=1 to MaxAlumno-1 do for j:=i+1 to MaxAlumno do begin if examen[i,MaxExamen] < examen[j,MaxExamen] then begin {intercambio de nombres en vector} aux_alumno:=alumno[i]; alumno[i] :=alumno[j]; alumno[j] :=aux_alumno; {intercambio de calificaciones en matr�z} move(examen[i],aux_examen,SizeOf(aux_examen)); move(examen[j],examen[i],SizeOf(aux_examen)); move(aux_examen,examen[j],SizeOf(aux_examen)) end end; {recorrido de matr�z y vector} gotoxy(25,14);Write('Datos ordenados'); gotoxy(5,16);Write('Nombre'); gotoxy(20,16);Write('Examen1 Examen2 Examen3 Promedio'); col:=5;ren:=17; for i:=1 to MaxAlumno do begin gotoxy(col,ren); Write(alumno[i]); col:=22; for j:=1 to MaxExamen do begin gotoxy(col,ren); Write(examen[i,j]:3:2); col:=col+10 end; col:=5; inc(ren) end; readkey end. Arrays multidimensionales Turbo Pascal no limita el n�mero de dimensiones de un array, pero s� que debe estar declarado el tipo de cada sub�ndice. Formato : identificador = array [�ndice1] of array [�ndice 2]..of array [�ndice n] of tipo de elemento identificador = array [�ndice 1, �ndice 2,...,�ndice n] of tipo de elemento Ampliando el ejemplo anterior supongase que ahora deseamos capturar calificaciones para 3 materias en cuyo caso aplicaremos un array tridimensional. De la siguiente forma :

Ejemplo: Program Tridimensional; {El siguiente programa captura calificaciones de 5 alumnos en 3 examenes de 3 materias distintas, y despliega en pantalla los promedios ordenados en forma descendente } Uses Crt; Const MaxAlumno = 5; MaxExamen = 4; {Columna 4 almacena el promedio} MaxMateria = 3; materia : array[1..3]of string[8]=('Fisica','Ingles','Historia'); Var Alumno : array [1..MaxAlumno] of string[10]; examen : array [1..MaxAlumno,1..MaxExamen,1..MaxMateria] of real; aux_examen : array [1..MaxExamen]of real; {reserva 60 posiciones de memoria de datos reales : 5 filas por 4 columnas y 3 dimensiones} promedio :real; aux_alumno :string [10]; i,j,k,col,ren : byte; begin ClrScr; {lectura de arrays paralelos de manera simult�nea} for k:=1 to MaxMateria do begin ClrScr; gotoxy(34,3);Write(materia[k]); gotoxy(5,5);Write('Nombre'); gotoxy(20,5);Write('Examen1 Examen2 Examen3 Promedio'); col:=5;ren:=6; for i:=1 to MaxAlumno do begin gotoxy(col,ren); if k=1 then ReadLn(alumno[i]) {lectura de vector} else Write(alumno[i]); col:=22;promedio:=0; for j:=1 to MaxExamen-1 do begin gotoxy(col,ren); ReadLn(examen[i,j,k]); {lectura de matr�z} promedio:=promedio+examen[i,j,k]; col:=col+10 end; examen[i,j+1,k]:=promedio/3; gotoxy(col,ren);Write(promedio/3:3:2); inc(ren); col:=5 end; gotoxy(15,22); Write('Presione una tecla para continuar....'); ReadKey end; {ordenaci�n} for k:=1 to MaxMateria do for i:=1 to MaxAlumno-1 do for j:=i+1 to MaxAlumno do begin if examen[i,MaxExamen,k] < examen[j,MaxExamen,k] then begin {intercambio de nombres en vector} aux_alumno:=alumno[i]; alumno[i] :=alumno[j]; alumno[j] :=aux_alumno; {intercambio de calificaciones en matr�z} move(examen[i,k],aux_examen,SizeOf(aux_examen)); move(examen[j,k],examen[i,k],SizeOf(aux_examen)); move(aux_examen,examen[j,k],SizeOf(aux_examen)) end end; {recorrido de matr�z y vector} for k:=1 to MaxMateria do begin ClrScr; gotoxy(35,4);Write(materia[k]); gotoxy(25,5);Write('Datos ordenados'); gotoxy(5,6);Write('Nombre'); gotoxy(20,6);Write('Examen1 Examen2 Examen3 Promedio'); col:=5;ren:=7; for i:=1 to MaxAlumno do begin gotoxy(col,ren); Write(alumno[i]); col:=22; for j:=1 to MaxExamen do begin gotoxy(col,ren); Write(examen[i,j,k]:3:2); col:=col+10 end; col:=5; inc(ren) end; gotoxy(15,22); Write('Presione una tecla para continuar....'); readkey end end.

CopyRight© 2003/2004, Diego Castillo. Todos los Derechos Reservados
Catamayo - Loja - Ecuador | Resoluci�n Minima 800x600
Estadisticas

Hosted by www.Geocities.ws

1