Programación con vectores

Anuncio
CURSO: 1§
P.8.10.− En un vector están almacenados los nombres de los pacientes de una clínica dental, y en otro
vector, paralelo al anterior, la cantidad que ese cliente adeuda o un cero (0) si está al corriente de pago.
Escribir un programa que genere 2 listados, uno con los clientes que tienen pendientes cantidades a
pagar y el otro, con los clientes al corriente de pago.
program clinica;
uses crt;
const
n=10;
type
tarray= array [1..n] of string;
tarray1= array [1..n] of integer;
var
pacientes:tarray;
deuda:tarray1;
opc:char;
{Visualizaci¢n del menu}
procedure menu;
begin
clrscr;
writeln ('A − ALTAS');
writeln ('M − LISTADO DE MOROSOS');
writeln ('C − LISTADO DE PACIENTES AL CORRIENTE DE PAGO');
writeln ('S − SALIR')
END;
{**********************}
{este procedimiento introduce los datos de los pacientes}
1
procedure altas (var a:tarray{pacientes};var b:tarray1{deuda});
var
ch:char;
i:integer;
begin
i:=1;
repeat
clrscr;
write ('Nombre: '); readln (a[i]);
write ('Cantidad que adeuda: '); readln (b[i]);
i:=i+1;
write ('Mas altas (S/N)');
ch:=upcase (readkey);
until (ch='N')
end;
{*********************************************************}
{Ofrece los listados de los pacientes, segun la opci¢n que se haya seleccionado}
procedure listado (ch:char; a:tarray; b:tarray1);
var
i:integer;
begin
clrscr;
case ch of
'M': begin
writeln ('LISTADO DE MOROSOS');
for i:=1 to n do
2
begin
if b[i]>0 then
writeln (a[i],' adeuda ', b[i])
end
end;
else
begin
writeln ('LISTADO DE PACIENTES AL CORRIENTE DE PAGO');
for i:=1 to n do
begin
if b[i]=0 then
writeln (a[i])
end
end
end;
readkey
end;
{*************************************************************************}
begin
clrscr;
repeat
repeat
menu;
opc:=upcase (readkey);
until (opc='A') or (opc='M') or (opc='C') or (opc='S');
case opc of
3
'A': altas (pacientes,deuda);
'M': listado (opc,pacientes,deuda);
'C': listado (opc,pacientes,deuda)
end;
until (opc='S')
end.
4
Descargar