Pascal/Turbo Pascal - altas y bajas en pascal

 
Vista:

altas y bajas en pascal

Publicado por luis armando ortiz puentes (1 intervención) el 14/03/2006 18:48:18
hola a todos, nmiren el problma es que me encargaron hacer un trabajo de altas, bajas, modificaciones y meter de inicio 30 alumnos, pero eltrabajo lo quieren en arreglos y no se como se hacen, si alguien de ustedes sabe como se hace, porfavor digamelo porque si no voy a reprobar, jajaja.
bueno sin mas gracias por su atencion, adios y suerte en sus programas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:altas y bajas en pascal

Publicado por Edgar Rodriguez (8 intervenciones) el 26/03/2006 07:11:14
No te voy a hacer el programa pero aquí tengo algo que te puede servir...
Es una explicación que hice en Delphi1 y que puede usarse como si fuera pascalito pero en Windows con todas las de la ley... si quieres pasarlo como los profesores antiguos dicen, cambia OBJECT Por record y saca las funciones y procedimientos fuera del record y borra el constructor y el destructor, cambia también las implementaciones de los procedimientos... que lástima que los profesores no se actualicen a Delphi...
program Project4;

uses WinCrt;

type
Palumno = ^Talumno;
Talumno = OBJECT
nombre : String;
edad : byte;
nota : array [1..4] of double;
function CalcularNotas: double;
procedure IngresarNota(i: byte);
procedure IngresarDatos;
procedure ImprimaDatos;
constructor Crear;
destructor free;
end;

constructor Talumno.Crear;
var i:byte;
begin
{ inherited Create;}
nombre := '';
edad := 0;
for i:= 1 to high(nota) do
nota[i] := 0.0;
end;

destructor Talumno.free;
begin
{ inherited Free;}
end;

procedure Talumno.ImprimaDatos;
var j:byte;
begin
writeln('El nombre del estudiante es: ', nombre);
writeln('Edad: ', edad);
for j := 1 to high(nota) do
writeln('Nota: ', j, ' es ', nota[j]:0:2);
writeln('El promedio es:', CalcularNotas:0:2);
writeln;
end;

procedure Talumno.IngresarDatos;
var i : byte;
begin
write('Escriba el nombre del estudiante: ');
readln(nombre);
write('digite la edad: ');
readln(edad);
for i := 1 to high(nota) do
IngresarNota(i);
end;

function Talumno.CalcularNotas: double;
var i : byte;
promedio : double;
begin
promedio := 0.0;
for i := 1 to high(nota) do
promedio := nota[i] + promedio;
result := promedio / i;
end;

procedure Talumno.IngresarNota(i : byte);
begin
Write('Por favor ingresa la nota ',i,': ');
readln(nota[i]);
end;

var k :byte;
var
alumnos : array [1..3] of Palumno;
Q : Palumno;
begin
clrscr;
for k := 1 to high(alumnos) do begin
alumnos[k] := new(PAlumno); {alumnos[k] := TAlumno.Create;}
q := alumnos[k];
alumnos[k]^.IngresarDatos;
q^.nombre := 'HOLA';
alumnos[k]^.ImprimaDatos;
end;
for k := 1 to high(alumnos) do
dispose(alumnos[k]); {alumnos[k].Free;}
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:altas y bajas en pascal

Publicado por WILDWAR (1 intervención) el 29/05/2007 05:31:08
MIRA ESTE CODIGO SOLO LE FALTA MODIFICACIONES

/****************************************************************************************\
Program PROVEEDORES_BVIRTUAL;
Uses Crt;
Const
esc = #27;
Type
nodos = ^datos;
datos = record
cod : string[3];
nombre : string[30];
lugar : string[20];
sueldo : real;
liga : nodos
end;

Var
p,q,inicio:nodos;
tecla :char;

procedure inserta_nodo(var p : nodos);
begin
if inicio=nil then
inicio:=p
else
q^.liga:=p;
q:=p
end;
procedure elimina_nodo(var p,q:nodos);
begin
if p=inicio then
begin
if inicio^.liga=nil then
inicio:=nil
else
inicio:=inicio^.liga
end
else
q^.liga := p^.liga;
dispose(p)
end;


procedure libera_memoria;
begin
p:=inicio;
while(p<>nil) do
begin
q:=p;
p:=p^.liga;
dispose(q)
end
end;
function busca_clave(var p,q:nodos;clave:string):boolean;
begin
if inicio <> nil then
begin
p:=inicio;
While ((p^.cod<>clave)and (p^.liga<>nil)) do
begin
q:=p;
p:=p^.liga
end;
if p^.cod=clave then
busca_clave:=true
else
busca_clave:=false
end
else
busca_clave:=false
end;

procedure Agregar;
Var
otro:char;
begin
Repeat
ClrScr;
gotoxy(30,5);Write('ÎÍÎÍÎÍÎÍÎÍINFORMACION DE PROVEEDORESÍÎÍÎÍÎÍÎÍÎ');
New(p);
p^.liga:=nil;

gotoxy(25,7);Write('COD...............:');
ReadLn(p^.cod);
gotoxy(25,8);Write('Nombre Proveedor..:');
ReadLn(p^.nombre);
gotoxy(25,9);Write('Ciudad ...........:');
ReadLn(p^.lugar);
Repeat
{$I-} {validación de entrada de datos}
gotoxy(25,10);write('No. Articulos...: ');
ReadLn(p^.sueldo);
{$I+}
until IOResult=0;
inserta_nodo(p);
gotoxy(20,22);write('Agregar nuevo proveedor s/n? ');
otro:=ReadKey
until otro in ['n','N',Esc]
end;

procedure Eliminar;
Var
otro :char;
clave:string[3];
begin
Repeat
ClrScr;
gotoxy(30,5);Write('ÎÍÎÍÎÍÎÍELIMINAR PROVEEDORÍÎÍÎÍÎÍÎ');
gotoxy(25,7);Write('Cod. Proveedor..:');
ReadLn(clave);
if busca_clave(p,q,clave) then
begin
gotoxy(25,8);Write('Nombre Proveedor....: ');
Write(p^.nombre);
gotoxy(25,9);Write('Ciudad..............: ');
Write(p^.lugar);
gotoxy(25,10);write('Numero de articulos: ');
Write(p^.sueldo:6:2);
gotoxy(20,15);Write('Desea eliminarlo s/n? ');
otro:=ReadKey;Write(otro);
if otro in['s','S'] then
elimina_nodo(p,q)
end
else
begin
gotoxy(20,10); Write('Cod. no existe...')
end;
gotoxy(20,22);write('Desea eliminar otro s/n? ');
otro:=ReadKey
until otro in ['n','N',Esc]
end;

procedure consultas;
begin
p:=inicio;
while p<>nil do
begin
ClrScr;
gotoxy(30,5);Write('ÎÍÎÍÎÍÎÍCONSULTAR PROVEEDORESÍÎÍÎÍÎÍÎ');
gotoxy(25,7);Write('Cod...: ');
Write(p^.cod);
gotoxy(25,8);Write('Nombre Proveedor : ');
Write(p^.nombre);
gotoxy(25,9);Write('Ciudad: ');
Write(p^.lugar);
gotoxy(25,10);write('No. Articulos : ');
Write(p^.sueldo:6:2);
gotoxy(20,22);Write('Presione una tecla...');
p:=p^.liga;
ReadKey
end
end;


begin
inicio:=nil;
Repeat
ClrScr;
gotoxy(25,5);Write('CONSULTA DE PROVEEDORES');
gotoxy(20,8);Write('1....AGREGAR PROVEEDOR');
gotoxy(20,9);Write('2....ELIMINAR PROVEEDOR');
gotoxy(20,10);write('3....CONSULTAR PROVEEDOR');
gotoxy(20,11);Write('4....SALIR (Esc)');
gotoxy(20,13);Write('Opción [ ]');
gotoxy(43,13);
tecla:=ReadKey;
case tecla of
'1' :Agregar;
'2' :Eliminar;
'3' :consultas
end
until tecla in ['4',esc];
libera_memoria;
ClrScr
end.

/*****************************************************************************************\
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar