Foros del Web » Programación para mayores de 30 ;) » Programación General »

pascal: record y procedure

Estas en el tema de pascal: record y procedure en el foro de Programación General en Foros del Web. Me puse a ver estudiar de pascal como para fijar conocimientos y estaba haciendo un ejercicio que encontre que dice: Cita: Realice un programa en ...
  #1 (permalink)  
Antiguo 15/06/2005, 18:31
Avatar de chaval  
Fecha de Ingreso: febrero-2003
Ubicación: en elgun lugar del cyberespacio
Mensajes: 118
Antigüedad: 21 años, 2 meses
Puntos: 0
pascal: record y procedure

Me puse a ver estudiar de pascal como para fijar conocimientos y estaba haciendo un ejercicio que encontre que dice:
Cita:
Realice un programa en Pascal en donde se defina un tipo de dato registro para identificar los datos de un alumno de un instituto de enseñanza. Los datos que interesan de cada alumno son: matricula, apellido, nombres, domicilio, localidad, provincia, codigo postal y teléfono. Se deberá solicitar el ingreso de un número N (entero), el cual indicará indicará la cantidad de registros que se cargarán desde el programa. Se pide: cargar los N registros e imprimir la cantidad de alumnos que viven en la provincia de Buenos Aires.
Lo primero que se me ocurrio fue usar records y procedures e hice esto:
Código:
Program Alumnos;
Var
	n, i, p : integer;  {n=registros, i=contador, p=provincia}
Type
datos = Record
	matricula:integer;
	apellido:String;
	nombres: String;
	domicilio: String;
	localidad: String;
	provincia: String;
	c_postal: String;
	telefono: integer;
End;
Var
	alumno[n] : datos;
{********************************************************}
	Procedure Lee_Datos;
		Begin
			Writeln('Numero de Martricula: '); Readln(alumno[i].matricula);
			Writeln('Apellido: '); Readln(alumno[i].apellido);
			Writeln('Nombres: '); Readln(alumno[i].nombres);
			Writeln('Domicilio: '); Readln(alumno[i].domicilio);
			Writeln('Localidad: '); Readln(alumno[i].localidad);
			Writeln('Provincia: '); Readln(alumno[i].provincia);
			If (alumno[i].provincia='Buenos Aires') Or (alumno[i].provincia='buenos aires') Or (alumno[i].provincia='Bs As') Then
				p:=p+1;
			End;
			Writeln('Codigo Postal: '); Readln(alumno[i].c_postal);
			Writeln('Telefono: '); Readln(alumno[i].telefono);
		End;	
{********************************************************}
Begin
	p:=0;
	Writeln('Indique la cantidad de registros que va a ingresar: ');
	Readln(n);
	For i := 1 to n Do
		Lee_Datos;
	End;
	Writeln('En Buenos Aires viven: ', p);
End;
Pero me da error por todos lados, por lo que modifique he hice esto:
Código:
Program Alumnos;
Var
	n, i, p : integer;
Type
datos = Record
	matricula:integer;
	apellido:String;
	nombres: String;
	domicilio: String;
	localidad: String;
	provincia: String;
	c_postal: String;
	telefono: integer;
End;
Var
	alumno : datos;
{*******************************************************}
	Procedure Lee_Datos;
		Begin
			Writeln('Numero de Matricula: '); Readln(alumno.matricula);
			Writeln('Apellido: '); Readln(alumno.apellido);
			Writeln('Nombres: '); Readln(alumno.nombres);
			Writeln('Domicilio: '); Readln(alumno.domicilio);
			Writeln('Localidad: '); Readln(alumno.localidad);
			Writeln('Provincia: '); Readln(alumno.provincia);
			If (alumno.provincia='Buenos Aires') Or (alumno.provincia='buenos aires') Or (alumno.provincia='Bs As') Then
				p:=p+1;
			Writeln('Codigo Postal: '); Readln(alumno.c_postal);
			Writeln('Telefono: '); Readln(alumno.telefono);
		End;
{*******************************************************}
Begin
	p:=0;
	Writeln('Indique la cantidad de registros que va a ingresar: ');
	Readln(n);
	For i := 1 to n Do
		Lee_Datos;
	Writeln('En Buenos Aires viven: ', p);
End.
Este funciona perfecto salvo que no cumple con lo que se me pide ya que al escribir por ejemplo Readln(alumno.telefono) supuestamente esta sobre escribiendo el valor de telefono con cada nueno N registro. Hasta donde yo sabia para accesar un registro en una determianda posición de un array se tenia que escribir por ejemplo Readln(alumno[25].telefono); pero me da error.
Por otro lado yo sabia que para definir una tabla con N elementos se debia hacer asi:
alumno[n]:datos;
pero tambien me da error.
¿alguien tiene idea en que estoy fallando?

gracias
El Chaval
__________________
CHAVAL
Buenos Aires, Argentina, América, La Tierra,
Via Lactea, Universo Tridemensional... :pensando:
  #2 (permalink)  
Antiguo 14/01/2009, 15:07
 
Fecha de Ingreso: enero-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: pascal: record y procedure

La variable alumno: datos no la estas definiendo como un array por lo que te da error cuando usas alumno[25].telefono. Para eso debes declararla así:

var
alumno = array[1..n] of datos;

Y luego ya puedes hacer el bucle para ir leyendo todos los alumnos.

Espero que respondiese a tu pregunta

Saludos!


Luna
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:35.