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