Vous êtes sur la page 1sur 3

Universidad Catlica de Salta Estructura de datos y

algoritmos
Facultad de Ingeniera e Informtica Ejercicio de prctica
Punteros
Ejercicio:
a) Escribir las declaraciones necesarias para definir un tipo de dato
puntero a un registro de estudiantes con los campo, apellido, nombre,
fecha de nacimiento y notas. Los 2 primeros definirlos con cadenas de
25 caracteres, a fecha definirlo como puntero a un registro con los
campos das, mes y ao y al campo nota como puntero a un array de
integer.
b) Escribir un procedimiento que devuelva los datos de un registro de
alumnos.
program puntero;
uses crt;
type
puntalu!"alumno; #puntalu es un puntero al registro alumno$
#esta es la unica e%cepcion de utili&ar un tipo
de dato definido aba'o. En otros casos de declaraciones
da error (solo es valido para punteros)$
fecha!record
dia*integer;
mes*integer;
anio*integer;
end;
vector!array+,..-,,. of byte;
alumno!record
apellido*string+25.;
nombre*string+25.;
fechanac*"fecha; #fechanac es un puntero al registro fecha$
nota*"vector; #nota es un puntero al array vector$
end;
#para la carga de un alumno al puntero$
procedure agregar(var pun*puntalu);
var i,code,dd,mm,aa,n*integer;
fech *string;
ban*boolean;
begin
/ith pun" do
begin
/riteln(01ngrese apellido0);
readln(apellido);
/riteln(01ngrese nombre0);
readln(nombre);
repeat #para controlar que ingrese la fecha correctamente$
ban*!true;
/riteln(0ingrese dd2mm2aa0);
Universidad Catlica de Salta Estructura de datos y
algoritmos
Facultad de Ingeniera e Informtica Ejercicio de prctica
readln(fech);
val(fech+-.3fech+2.,dd,code);
if code45, then ban*!false;
val(fech+6.3fech+5.,mm,code);
if code45, then ban*!false;
val(fech+7.3fech+8.,aa,code);
if code45, then ban*!false;
until ban!true;
ne/(fechanac); #porque es otro puntero, y hay que crearlo$
fechanac".dia*!dd;
fechanac".mes*!mm;
fechanac".anio*!aa;
/riteln(01ngrese la cantidad de notas a agragar0);
readln(n);
ne/(nota); #porque es otro puntero y hay que crearlo$
nota"+,.*!n; #en la pos , colocamos la cantidad de notas$
for i*!- to n do
begin
/riteln(01ngrese la 0, i,09 nota del alumno0, nombre ,0 0,apellido);
readln(nota"+i.);
end;
end;
end;
#para leer el puntero cargado$
procedure leerpunt(punt*puntalu);
var
i*integer;
begin
/ith punt" do
begin
/riteln(0:lumno * 0, apellido,0, 0, nombre);
/riteln(0;echa de nacimiento* 0, fechanac".dia,0 del 0,fechanac".mes,0 de -<0,
fechanac".anio);
for i*!- to nota"+,. do
/riteln(0=ota 0,i,0 ! 0,nota"+i.);
end;
end;
#variables del cuerpo del programa$
var punteroalumno*puntalu;
begin #cuerpo principal$
clrscr;
ne/(punteroalumno); #creamos el puntero punteroalumno$
agregar(punteroalumno);
leerpunt(punteroalumno);
read>ey;
dispose(punteroalumno); #quitamos el puntero de memoria$
Universidad Catlica de Salta Estructura de datos y
algoritmos
Facultad de Ingeniera e Informtica Ejercicio de prctica
end.

Vous aimerez peut-être aussi