Вы находитесь на странице: 1из 13

Algoritmos y Estructuras de Datos

Ingeniera en Sistemas
ESTRUCTURAS SIMPLES...

LAS CADENAS
En la primera parte se estudi el concepto de tipo de datos carcter (char) y se defini un carcter como un
smbolo del juego de caracteres de la computadora. Una constante carcter se defini como cualquier carcter
entre separadores (apstrofo o dobles comillas).
Una cadena (string) de caracteres es un conjunto de caracteres -incluido el blanco- que se almacenan en un
rea contigua de la memoria. Pueden ser entradas o salidas al desde un terminal. La longitud de una cadena es
el nmero de caracteres que contiene. La cadena que no contiene caracter se denomina cadena vaca o nula, y
su longitud es cero; no se debe confundir con una cadena compuesta-slo de blancos ----espacios en blanco ya
que sta tendr como longitud el nmero de blancos de la misma.

La representacin de las cadenas suele ser con comillas simples o dobles


Una secuencia finita de caracteres se denomina normalmente una cadena.
SECUENCIA FINITA DE SIMBOLOS PERTENECIENTES A UN CONJUNTO
PREDETERMINADO DE CARACTERES.
FORMALIZACION:
S = A1 A2 A3... An
donde cada carcter ai A, siendo A = alfabeto, para 1 i n
Las instrucciones bsicas en los lenguajes de programacin de las cadenas son: asignar y, entrada/salda
(leer/escribir)

Asignacin:
Si la variable NOMBRE se ha declarado como tipo cadena

Las declaraciones de
instrucciones estn realizadas
en Lenguaje Pascal

var cadena: NOMBRE


la instruccin de asignacin debe contener en el lado derecho de la asignacin una constante tipo cadena o bien
otra variable del mismo tipo. As,
NOMBRE Luis Hermenegldo'

significa que la variable NOMBRE toma por valor la cadena 'Luis


Hermenegildo

Entrada/Salida
La entrada/salida desde un terminal se puede realizar en modo carcter; para ello bastar asignar -a travs del
correspondiente dispositivo- una cadena de caracteres a una variable tipo cadena. As, por ejemplo, si A, B, C y
D se han declarado como variables tipo cadena:

var cadena: A, B, C, D.
read(A,B)
write(C;D)
1

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
asignarn a A y B las cadenas introducidas por el teclado y visualizarn o imprimirn en el dispositivo de salida
las cadenas que representan las variables C y D.
Segn el tipo de lenguaje de programacin elegido se tendr mayor o menor facilidad para la realizacin de
operaciones: Funciones predefinidas, o es preciso definirlos por el usuario con la natural complejidad que
suponga el diseo del algoritmo correspondiente. En cualquier caso, las operaciones con cadena ms usuales
son:

clculo de la longitud,
comparacin,
concatenacin,
extraccin de subcadenas,
bsqueda de informacin

Longitud
La longitud de una cadena, como ya se ha comentado es el nmero de
caracteres de la cadena. As,
Don Quijote de la Mancha

tiene veinticuatro caracteres.

La operacin de determinacin de la longitud de una cadena se


representar por la funcin Longitud, cuyo formato es:

LONGITUD
Operando: cadena
Tipo de resultado: entero
N = Length(S)
S = dato
Length(S) = 4

longitud (cadena)

Comparacin
La comparacin de cadenas (igualdad y desigualdad) es una operacin muy importante, sobre todo en la
clasificacin de datos tipo carcter, que se utiliza con mucha frecuencia en aplicaciones de proceso de datos
(clasificaciones de listas, tratamiento de textos, etc.).
Los criterios de comparacin se basan en el orden numrico del cdigo o juego de caracteres que admite la
computadora o el propio lenguaje de programacin. En el lenguaje algortmico se utiliza el cdigo ASCII como
cdigo numrico de referencia. As.

el carcter A' ser <

el carcter 'C

(cdigo 65)

(cdigo 67)

el carcter 8 ser <


(cdigo 56)

el carcter ' i
(codigo 105)

En la comparacin de cadenas se pueden considerar dos operaciones ms elementales: igualdad y desigualdad.


Igualdad
Dos cadenas a y b de longitudes in y n son iguales si,:

el nmero de caracteres de a y b son los mismos (m n)

cada carcter de a es igual a su Correspondiente de b; si a a,a,...a, y b bIb---.b.. se debe verificar que a,


=_ b, para todo i en el rango 1 <= i <* n.
As:

'EMILIO' =
EMILIO =

'EMILIO'
EMILIA

es una expresin verdadera


el una expresin falsa
2

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
EMILIO =

EMILIO

expresin falsa, , las longitudes no son iguales

Desigualdad
Los criterios para comprobar la desigualdad de cadena utilizan normalmente los operadores de relacin <, <= ,
>=, <> o>< y se ajustan a una comparacin de carcteres correspondientes en ambas cadenas hasta conseguir
dos caracteres diferentes. De este modo, se pueden conseguir clasificaciones alfanumricas:
'GARCIA' < 'GOMEZ'
ya que las comparaciones sucesivas de caracteres son:
G-A-R-C-I-A
G-O-M-E-Z

G - G, A - O ...

una vez que se encuentra una desigualdad, no es preciso continuar; como se observa, las cadenas no tienen por
que tener la misma longitud para ser comparadas.
En las sucesivas comparaciones se puede apreciar una amplia gama de posibles casos.
LUIS
'ANA'
'TOMAS
'BARTOLO'
CARMONA
LUIS

<
<
<
<
>
>

'LUISITO'
'MARTA'
'LUIS'
'BARTOLOME'
'MADRID'
'LUIS'

verdad
verdad
falsa
verdad
falsa
verdad

Se puede observar de los casos anteriores que la presencia de cualquier carcter -incluso el blanco, se
considera mayor siempre que la ausencia. Por eso, 'LUIS es mayor que ' LUIS'.

Concatenacin
La concatenacin es la operacin de reunir varias cadenas de
caracteres en una sola, pero conservando el orden de los
caracteres de cada una de ellas. El smbolo que representa la
concatenacin vara de unos lenguajes a otros. Los, ms
utilizados son:
* , //, &, o
En nuestro libro utilizaremos + y, en ocasiones, Las cadenas
para concatenarse pueden ser constantes o variables.
'MIGUEL'
'DE'
CERVANTES'
'MIGUELDECERVANTES'

CONCATENACION
Junta dos cadenas, de extremo a extremo
en una nueva cadena
Operando: 2 cadenas
Tipo de resultado: cadena
S0 = a1a2a3...an
S1 = b1b2b3...bm
A alfabeto con ai A, para 1 i n
B alfabeto con bi A, para 1 i m

Puede comprobar que las cadenas, en realidad, se pegan


unas al lado de las otras, por ello, si al concatenar frases desea dejar blancos entre ellas, deber indicarlos
expresamente en alguna de, las cadenas. As, las operaciones
'MIGUEL
'MIGUEL'

'DE
DE

'CERVANTES'
'CERVANTES'

producen el mismo resultado 'MIGUEL DE CERVANTES'

Subcadena
Es posible realizar operaciones de concatenacin con subcadenas.
3

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
subcadena (' PATO DONALD', 1, 4) & subcadena (' ESTA TIERRA',5, 4)
equivale a la cadena ' PATO TIE',
La aplicacin de la funcin a una subcadena,

subcadena (cadena- fuente, p,longsub)


puede producir los siguientes resultados:
1.
Si longsub no existe, entonces la subcadena comienza en el mismo carcter posicin y termina con el
ltimo carcter.
2.

Si longsub -<= 0, el resultado es una cadena vaca.

3.

Si p >longitud (cadena_fuente), la subcadena resultante ser vaca.


subcadena ('MORTIMER', 9, 2) produce una cadena vaca.

4.

Si p < = 0, el resultado es tambin una cadena vaca.


subcadena ( 'valdez, 0, 4) y subcadena 'valdez' ,8) proporcionan cadenas nulas.

Formas de representacin de las cadenas


La forma de almacenar una cadena involucra tanto la representacin de cada carcter de la cadena como la
representacin de la combinacin de caracteres que forman la cadena.
La cadenas se almacenan en memoria es direcciones contiguas o adyacentes fsicamente, por lo tanto el espacio
fsico utilizado ser igual a la longitud de la cadena.

LOS ARREGLOS
Supongamos que nos enfrentamos a un problema como este: Una empresa que cuenta con 150 empleados, desea establecer una estadstica
sobre los salarios de sus empleados, y quiere saber cual es el salario promedio, y tambin cuantos de sus empleados gana entre $1250.00 y
$2500.00.
Si tomamos la decisin de tratar este tipo de problemas con datos simples, pronto nos percataramos del enorme desperdicio de tiempo,
almacenamiento y velocidad. Es por eso que para situaciones de este tipo la mejor solucin son los datos estructurados.
Un arreglo puede definirse como un grupo o una coleccin finita,
homognea y ordenada de elementos. Los arreglos pueden ser
de los siguientes tipos:

De una dimensin.

De dos dimensiones.

De tres o ms dimensiones.

Un arreglo es una coleccin de dos


o ms celdas de memoria
adyacentes los elementos del
arreglo asociadas con un nombre
simblico particular.

Un arreglo unidimensional es un tipo de datos estructurado que


est formado de una coleccin finita y ordenada de datos del
mismo tipo. Es la estructura natural para modelar listas de elementos iguales.

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener
que consultar a elementos anteriores o posteriores, esto mediante el uso de un ndice para cada elemento del arreglo que nos da su posicin
relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la direccin base del arreglo, la
cota superior y la inferior.

Operaciones Con Arreglos


Las operaciones en arreglos pueden clasificarse de la siguiente forma:
Lectura
Escritura
Asignacin
Actualizacin
Ordenacin
Bsqueda
REPRESENTACION EN MEMORIA
Los arreglos se representan en memoria de la forma siguiente:
x : array[1..5] of integer
Para calcular la direccin de memoria de un elemento dentro de
un arreglo se usa la siguiente formula:
A[i] = base(A) + [(i-li) * w]

donde :
A = Identificador nico del arreglo
i = Indice del elemento

li = Lmite inferior
w = Nmero de bytes tipo componente

ARREGLOS BIDIMENSIONALES
Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito
ordenado y homogneo. El acceso a ellos tambin es en forma directa por medio de un par
de ndices.
Los arreglos bidimensionales se usan para representar datos que pueden verse como una
tabla con filas y columnas. La primera dimensin del arreglo representa las columnas, cada
elemento contiene un valor y cada dimensin representa una relacin
La representacin en memoria se realiza de dos formas :
Almacenamiento por columnas o
Almacenamiento por renglones.
Para determinar el nmero total de elementos en un arreglo
bidimensional usaremos las siguientes frmulas:
RANGO DE RENGLONES (R1) = Ls1 - Li1+1
RANGO DE COLUMNAS (R2) = Ls2 - Li2+1
No. TOTAL DE COMPONENTES = R1 * R2

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
REPRESENTACION EN MEMORIA POR COLUMNAS
x : array [1..5,1..7] of integer
Para calcular la direccin de memoria de un elemento se usan la
siguiente formula:
A[i,j] = base (A) + [((j - li2) R1 + (i + li1))*w]
REPRESENTACION EN MEMORIA POR RENGLONES
x : array [1..5,1..7] of integer
Para calcular la direccin de memoria de un elemento se usan
siguiente formula:

la

A[i,j] = base (A) + [((i - li1) R2 + (j + li2))*w]


donde:
i = Indice del rengln a calcular
j = Indice de la columna a calcular
li1 = Lmite inferior de renglones
li2 = Lmite inferior de columnas
w = Nmero de bytes tipo componente

Arreglos Multidimensionales
Este tambin es un tipo de dato estructurado, que est compuesto por n dimensiones.
Para hacer referencia a cada componente del arreglo es necesario utilizar n ndices, uno
para cada dimensin.

Arreglo
tridimensional

Para determinar el nmero de elementos en este tipo de arreglos se usan las siguientes
frmulas:

RANGO (Ri) = lsi - (lii + 1)


No. TOTAL DE ELEMENTOS = R1 * R2* R3 * ...* Rn
donde:
i = 1 ... n
n = No. total de dimensiones
Para determinar la direccin de memoria se usa la siguiente formula:
LOC A[i1,i2,i3,...,in] = base(A) + [(i1-li1)*R3*R4*Rn + (i2-li2)*R3*R2*... (in - lin)*Rn]*w

Para procesar los datos almacenados en un arreglo, tenemos que hacer referencia a cada
elemento individual

especificando el nombre del arreglo

identificando el elemento deseado


6

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
Subndices
El entero entre [ y ] es el subndice del arreglo; los usamos para

diferenciar entre los elementos individuales de un arreglo

especificar cul elemento del arreglo queremos manejar

Podemos usar cualquier expresin de tipo entera como subndice:

para que la referencia sea vlida, el valor del subndice debe estar entre 0 y uno menos
que el tamao declarado del arreglo (o el nmero de elementos del arreglo)

es esencial entender la diferencia entre el valor de un subndice de un arreglo y el valor de


un elemento del arreglo

Un polinomio, p(x), es una funcin matemtica de la forma p(x) = a0 + a1x + a2x2 + + an1xn1
en que x es la variable del polinomio
a0, a1, a2, , an1 son coeficientes reales constantes
n1, en que n es un entero, es el grado del polinomio (an1 0)
Podemos representar un polinomio por su grado y por sus coeficientes; almacenamos los coeficientes
en un arreglo.
Una operacin tpica sobre polinomios es la evaluacin del polinomio para un determinado
valor de la variable x:

Por ejemplo si el valor de x = 3 para el polinomio Polin1 = x5 + 5x3 + 6x2 + 1, la evaluacin consiste
en reemplazar el valor de x por 3
Polin1 = 35 + 5.33 + 6.32 + 1

Los polinomios constituyen un caso especial en el estudio de listas ordenadas, especialmente con aquellos que utlizan para su
representacin arreglos unidimensionales.
Hemos visto la forma de escribir un polinomio:

A(x) = an xn + an-1 xn-1 + an-2 xn-2 + ........ + a1 x + a0


donde an 0 el el grado de A es n
Podemos representar A(x) como una lista ordenada de coeficientes, usando un arreglo
unidimensional de largo n

+2
7

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
A = ( n, an, an-1, ......., a1, a0 )
El primer elemento es el grado de A y le siguen los n+1 coeficientes en orden decreciente del valor
de los exponentes.- Esta solucin da una forma muy sencilla para realizar la sima y la
multiplicacin de los polimonios. El valor del exponente esta dado por el ndice, ya que conocemos
el grado.
Sin embargo, estudiemos que desventajas tiene esta forma de representacin.-Sea por ejemplo el
polimonio:
X1000 + 1
Este requiere para su representacin. Un vector de 1002 elementos, donde 999 de ellos son iguales
a cero. Esto nos lleva a considerar otro esquema de representacin.-Supongamos que tomamos el
polinomio A(x) y consideramos de l, solo los coeficientes distintos de cero. Esto nos resultar en el
siguiente polimonio:

bm-1 xe m-1 + bm-2 xe m-2 + .........+ b0xe 0


donde cada bi es un coeficiente distinto de 0 del polinomio A y los exponentes ei estn en orden
decreciente, del que em-1 > em-2 > em-3 > ......... > e0
Si todos los coeficientes distinto de A son distintos de 0, luego m = n + 1, ei i y bi =
ai para 0 i n.Alternativamente, si solo a0 0, entonces m = 1, b0 = an y e0 = n
Esto se puede representar en una lista de largo

2m + 1

( m , em-1 , bm-1 , em-2 , bm-2 , em-3 , bm-3 , ..........., e0 , b0 )


El primer elemento es el nmero de trminos distintos de cero. Luego cada trmino tiene dos
elementos representando el par (exponente, coeficiente).Cabe hacerse la pregunta, este mtodo, es ms eficiente que el que
representamos en el primer trmino? Evidentemente, resuelve mejor el caso del
problema x1000 +1, que lo representemos como (2, 1000, 1, 0, 1).-Sin embargo para
el ejemplo:

X4 + 10 x3 3x2 + 1
la representacin puede hacerse en las dos formas:
i) (4 , 1 , 10 , 3 , 0 , 1)

ii) (4 , 1 , 10 , 3 , 0 , 1)

En el peor caso, el esquema ii) requiere por lo menos el doble del almacenamiento que el esquema
i) (cuando el grado es n y todos los n+1 coeficientes son distintos de cero) Pero
1000
el esquema i) puede ser muy despilfarrador de espacio, como para X
+ 1.
Casi siempre se trabaja con el esquema ii)

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas

Otro problema de desperdicio de almacenamiento .... MATRICES SPARSE


No existe una definicin precisa de cuando una matriz se llamar SPARSE (esparcida o rala). Pero este
concepto se pude reconocer intuitivamente. Observemos la siguiente matriz...
Esto ocurre porque en la practica,
mucha de las matrices con que
trabajamos son sumamente grandes,
por ejemplo de 1000 x 1000, pero a la
vez son sparse, es decir que solo 1000
elementos del milln que suman el total
son distintos de cero.

Es fcil comprender que solo 8 de los 36 posibles


valores son distintos de cero. La cantidad de datos
distintos de ceros es muy pequea comparando con
la cantidad total de elementos, De este modo una
matriz sparse requiere que se considere una forma
alternativa de representacin.

Este tipo de matriz, si se representa como un arreglo bidimensional, excedera la capacidad de


almacenamiento o bien realizara una utilizacin ineficiente de los recursos del computador. La
representacin alternativa ser entonces almacenar EXPLICITAMENTE SOLO LOS ELEMENTOS
DISTINTOS DE CERO.
Cada elemento de una matriz esta unvocamente caracterizado por su fila y su columna i, j.- Luego
debemos almacenar una matriz sparse como una lista de 315 0
0
22 0
-15 tuplas de la forma:
0
0
0
-91
0

-11
0
0
0
0

3
0
0
0
28

A(0)
A(1)
A(2)
A(3)
A(4)
A(5)
A(6)
A(7)
A(8)

0
-6
0
0
0

1
6
1
1
1
2
2
3
5
6

0
0
0
0
0

2
6
1
4
6
2
3
4
1
3

0
0
0
0
0

3
8
15
22
-15
11
3
-6
91
28

(i , j , valor)

De este modo la matriz del ejemplo, se


almacenara en otra matriz A(0:t, a:3) donde t =
8 y equivale al numero de trminos distintos de
cero.
Los elementos A(0,1) y A(0,2) contienen el
numero de filas y columnas de la matriz original y
A(0,3) contiene el numero de elementos distintos
de cero.

Los registros
Un registro, en programacin, es un tipo de dato estructurado formado por la unin de varios
elementos bajo una misma estructura. Estos elementos pueden ser, o bien datos elementales
(entero, real, carcter,...), o bien otras estructuras de datos. A cada uno de esos elementos se le
llama campo.

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
Un registro se diferencia de un vector en que ste es una coleccin de datos iguales, es decir, todos
del mismo tipo, mientras que en una estructura los elementos que la componen, aunque podran
serlo, no tiene porque ser del mismo tipo.
o
o

Registros es un tipo de datos formado por una coleccin finita de elementos no necesariamente homogneos .
El acceso se realiza a travs de una referencia al nombre del registro seguido del campo especfico al que se
desea acceder y delimitado por un punto.

Notacin Algortmica de un Registro:

Nombre de Registro
REGISTRO Auto
codigo : entero
Campo
marca : cadena
Tipo de datos
precio : real
FIN_REGISTRO
Var: AUTOMOVILES : Auto

Referencia al Archivo Autos

Vista Grfica de un Registro


Cdigo
50078

Marca
Corsa swing 1.4

Precio
58.600

Un registro se puede representar grficamente en funcin de sus campos:


Ejemplo: Empleado:
Nombre

DNI

Domicilio

Tipo cadena

Tipo entero

Tipo cadena

Declaracin en Pascal:
Type
Empleado = record
Nombre
DNI
Domicilio
Salario
End

Sueldo
Tipo real

: string[30]
:integer
:string[40]
:real

Operaciones con registros.


Los procedimientos de lectura y escritura no permiten ms que nmeros, caracteres o cadenas. Un registro al
ser una estructura compuesta es preciso efectuar las operaciones de lectura y escritura individualmente.
Ejemplos de Manejo de Registros en Pascal

Escribir un programa en Pascal que almacene en un array de registros los nombres de los
alumnos, sus notas parciales y finales. Hallar la nota media y mostrar un mensaje de APTO si el
alumno supera o iguala la calificacin de 5 o NO APTO si no lo alcanza. Hacerlo para un nmero de 5
alumnos.
10

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
PROGRAM ALUMNOS;
Uses Crt;
Const numalumnos = 5;
Type tnotas = record
nombre2 : String;
n_parcial2, n_final2: Real; {Nota parcial y final}
end;
{Hacemos una fila dividida en 4 partes: tnotas, nombre2, n_parcial2, n_final2. Es como una tabla de Word, la cual
iremos rellenando con los datos obtenidos}
notas = Array[1..numalumnos] of tnotas;
{Ahora la copiamos tantas veces como numero de alumnos hay, es decir, obtenemos 5 filas iguales}
var clase : notas;
var nombre: String;
var n_parcial, n_final, n_media: Real;
var i: Integer;
Begin
ClrScr;
For i := 1 to numalumnos Do
Begin
WRITE('Introduzca el nombre del alumno ',i,' : ');
READLN(nombre);
WRITE('Introduzca su nota parcial: ');
READLN(n_parcial);
WRITE('Introduzca su nota final: ');
READLN(n_final);
WRITELN;
With clase[i] Do
Begin
n_parcial2 := n_parcial;
n_final2 := n_final;
nombre2 := nombre;
End;
End;
ClrScr;
WRITELN('NOMBRE':25,'Parcial':8,'Final':8,'Media':8, 'CALIFICACION':15);
WRITELN;
For i := 1 to numalumnos do
With clase[i] do
Begin
n_media := (n_parcial2 + n_final2) / 2;
WRITE(nombre2:25,n_parcial2:8:2,n_final2:8:2);
textcolor(14); WRITE(n_media:8:2);
If n_media >= 5 then
Begin
textcolor(11);
WRITELN ('APTO :-)':15);
End
Else
Begin
textcolor(1);
WRITELN ('NO APTO :-(':15);
11

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
End;
textcolor(7);
End;
End.

Escribir un programa en Pascal que almacene en un array de registros las caractersticas de cada
persona: nombre, sexo, edad, peso, color de pelo, color de piel, color de ojos, nacionalidad y telfono.
PROGRAM PERFIL;
Uses Crt;
Const numpersonas = 1; {Cambiando este valor lo podremos hacer para el numero de personas que deseemos}
Type caracteristicas = record
nombre2, nacionalidad2: String;
edad2: Integer;
sexo2, c_pelo2, c_ojos2: Char;
tf2: Longint;
{Creamos una fila con diferentes apartados}
end;
personas = Array[1..numpersonas] of caracteristicas;

{La copiamos tantas veces como personas haya}

var persons : personas;


nombre, nacionalidad: String;
edad, i: Integer;
sexo, c_pelo, c_ojos: Char;
tf: Longint;
Begin
ClrScr;
For i := 1 to numpersonas do
Begin
WRITELN('Introduzca los datos de la persona numero ',i,' : ');
WRITELN;
WRITE('Nombre:
'); READLN(nombre);
WRITE('Edad:
'); READLN(edad);
WRITE('Nacionalidad: '); READLN(nacionalidad);
Repeat
WRITE('Sexo (H, M): '); READLN(sexo);
Until (sexo = 'H') or (sexo = 'M');
WRITE('Telefono: '); READLN(tf);
Repeat
WRITE('Color de ojos (A, V, M): '); READLN(c_ojos);
Until (c_ojos = 'A') or (c_ojos = 'V') or (c_ojos = 'M');
Repeat
WRITE('Color de pelo (R, M, C): '); READLN(c_pelo);
Until (c_pelo = 'R') or (c_pelo = 'M') or (c_pelo = 'C');
WRITELN;
With persons[i] do
Begin
nombre2 := nombre;
edad2 := edad;
nacionalidad2 := nacionalidad;
sexo2 := sexo;
tf2 := tf;
c_ojos2 := (c_ojos);
12

Algoritmos y Estructuras de Datos


Ingeniera en Sistemas
c_pelo2 := (c_pelo);
{Almacenamos los datos dentro del array de registro}
End;
End;
textcolor(11);
WRITELN('Nombre':15,'Edad':6,'Nacionalidad':15,'Sexo':6, 'Telefono':12,'Color ojos':12,'Color pelo':12);
textcolor(7);
For i := 1 to numpersonas do
Begin
with persons[i] do
Begin
WRITE(nombre2:15,edad2:6,Nacionalidad2:15, sexo2:6,tf2:12,c_ojos2:12,c_pelo2:12);
End;
End;

13

Вам также может понравиться