Cita:
Lo primero que se me ocurrio fue usar records y procedures e hice esto: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.
Código:
Pero me da error por todos lados, por lo que modifique he hice esto: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;
Código:
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.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.
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