Pascal/Turbo Pascal - pilas y colas

 
Vista:

pilas y colas

Publicado por julia (9 intervenciones) el 10/09/2011 21:32:56
hola quisiera saber si me puede nayudar con estos dos algoritmos w no se com ohcerlos..

En una librería, al no tener más lugar en los estantes, se van
apilando los libros, como máximo 30, la vendedora ingresa los ISBN de cada
pila. Hallar la cantidad de libros apilados, listar los últimos 5 libros apilados. Al
vender cada libro ir eliminando de la pila y detectando el nuevo TOPE.


En una clínica la secretaria hace un listado con los nombres y
apellidos de las personas que van llegando para luego ser atendidas en ese
orden, el medico atiende como máximo 20 pacientes.
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

pilas y colas

Publicado por ramon (2158 intervenciones) el 17/09/2011 17:34:09
Pregunta con punteros registros o variables entiendo que es un proceso en pascal contesta me
para poder ayudarte.
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

pilas y colas

Publicado por julia (9 intervenciones) el 17/09/2011 22:39:18
con variables..
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

pilas y colas

Publicado por ramon (2158 intervenciones) el 18/09/2011 18:27:34
{Tu Primera Peticion}
program libreri;
uses
crt;
type
apilar = record
ISBN : array[1..30] of integer;
contenido : integer;
end;
var
estante : apilar;
i : integer;
tecla : char;

procedure entradatos;
begin
clrscr;
i := estante.contenido + 1;
repeat
gotoxy(10,2);write('*** N§ Libros = ',i - 1);
gotoxy(10,4);write('Entre ISBN : ');
gotoxy(22,4);readln(estante.isbn[i]);
estante.contenido := estante.contenido + 1;
gotoxy(10,6);write('Entra mas Libros [S/N]');
tecla := readkey;
gotoxy(10,6);clreol;
gotoxy(22,4);clreol;
i := i + 1;
if i > 30 then
tecla := 'N';
until tecla in['n','N'];
end;

procedure venta;
var
vendio : integer;
can : boolean;
begin
clrscr;
gotoxy(10,4);write('Entre ISBN Vendido : ');
gotoxy(31,4);readln(vendio);
i := 1;
can := false;
repeat
if estante.isbn[i] = vendio then
begin
estante.isbn[i] := 0;
estante.contenido := estante.contenido - 1;
can := true;
end;
i := i + 1;
until (i > estante.contenido) or (can = true);
end;

procedure anulalibro;
var
anula : integer;
sal : boolean;
begin
clrscr;
gotoxy(10,4);write('Entre ISBN a Anular : ');
gotoxy(31,4);readln(anula);
i := 1;
sal := false;
repeat
if estante.isbn[i] = anula then
begin
estante.isbn[i] := 0;
estante.contenido := estante.contenido - 1;
sal := true;
end;
i := i + 1;
until (sal = true) or (i > 30);
if sal = false then
begin
gotoxy(10,8);write('El libro Anulado No Existia Pulse [Enter]');
readln;
end;
end;

procedure presenta5ultimos;
var
s, cont : integer;
begin
clrscr;
cont := estante.contenido;
if cont < 5 then
begin
for i := 1 to cont do
begin
gotoxy(10,4 + i);write('ISBN : ',estante.isbn[i]);
end;
end
else
begin
i := cont - 4;
s := 0;
repeat
gotoxy(10,4 + s);write('ISBN : ',estante.isbn[i]);
i := i + 1;
s := s + 1;
until i > cont;
end;
gotoxy(10,12);write('Pulse [Enter]');
readln;
end;

procedure menu;
var
pulsa : char;
begin
clrscr;
textcolor(15);
gotoxy(5,4);write('***** Menu General *****');
gotoxy(5,6);write(' 1 = Entra Libros ');
gotoxy(5,8);write(' 2 = Anula Libro ');
gotoxy(5,10);write(' 3 = Presenta 5 Ultimos ');
gotoxy(5,12);write(' 4 = Ventas ');
gotoxy(5,14);write(' 5 = Salir ');
gotoxy(5,18);write('**** Elija Opcion ****');
gotoxy(15,18);
repeat
pulsa := readkey;
case pulsa of
#49 : entradatos;
#50 : anulalibro;
#51 : presenta5ultimos;
#52 :;
end;
clrscr;
textcolor(15);
gotoxy(5,4);write('***** Menu General *****');
gotoxy(5,6);write(' 1 = Entra Libros ');
gotoxy(5,8);write(' 2 = Anula Libro ');
gotoxy(5,10);write(' 3 = Presenta 5 Ultimos ');
gotoxy(5,12);write(' 4 = Ventas ');
gotoxy(5,14);write(' 5 = Salir ');
gotoxy(5,18);write('**** Elija Opcion ****');
gotoxy(15,18);
until pulsa = #53;
clrscr;
end;


begin
clrscr;
fillchar(estante,sizeof(estante),0);
menu;
end.


{Tu Segunda Peticion}
program clinica;
uses
crt;
type
paciente = record
nombre : string[80];
numero : integer;
end;

var
lista : array[1..20] of paciente;
x, y, i : integer;



function entrada(x, y : integer) : string;
var
tecla : char;
da : integer;
dat : string[30];
begin
da := 1;
repeat
tecla := readkey;
if upcase(tecla) in[#65..#90,#165,#32] then
begin
dat[da] := tecla;
dat[0] := chr(da);
gotoxy(x + da,y);write(dat[da]);
da := da + 1;
if da > 80 then
da := 80;
end;
if tecla = #8 then
begin
da := da - 1;
if da < 1 then
da := 1;
dat[da] := ' ';
dat[0] := chr(da);
gotoxy(x + da,y);write(' ');
end;
until (tecla = #13) or (tecla = #27);
if tecla <> #27 then
entrada := copy(dat,1,length(dat));
end;

procedure entradadatos;
var
cont : integer;
pulsada : char;
entramas, fin : boolean;
begin
clrscr;
cont := 1;
fin := false;
i := 1;
entramas := false;
repeat
x := 27;
y := 4;
gotoxy(1,4);write('Entre Nombre Y Apellidos : ');
lista[cont].nombre := entrada(x,y);
lista[cont].numero := cont;
clrscr;
repeat
gotoxy(10,20);write('Entra Mas Personas [S/N]');
pulsada := readkey;
if upcase(pulsada) <> 'N' then
begin
cont := cont + 1;
if cont > 20 then
fin := true;
clrscr;
entramas := true;
end;
until (entramas = true) or (upcase(pulsada) = 'N') or (fin = true);
if entramas = true then
entramas := false;
until (upcase(pulsada) = 'N') or (fin = true);
end;

procedure lista_personas;
var
nu : integer;
begin
nu := 0;
clrscr;
for i := 1 to 20 do
begin
if lista[i].numero > 0 then
nu := nu + 1;
end;
for i := 1 to nu do
begin
gotoxy(3,4 + i);write('[',lista[i].numero,'] ',lista[i].nombre);
end;
readln;
end;

procedure menu;
var
opcion : char;
begin
gotoxy(3,3);write('**** Menu General ****');
gotoxy(3,5);write(' 1 = Entrada Datos Persona');
gotoxy(3,6);write(' 2 = Lista De Persona');
gotoxy(3,7);write(' 3 = Salir');
gotoxy(3,10);write(' <<< Elija Opcion >>>');
repeat
opcion := readkey;
case opcion of
'1' : entradadatos;
'2' : lista_personas;
end;
if opcion <> '3' then
begin
clrscr;
gotoxy(3,3);write('**** Menu General ****');
gotoxy(3,5);write(' 1 = Entrada Datos Persona');
gotoxy(3,6);write(' 2 = Lista De Persona');
gotoxy(3,7);write(' 3 = Salir');
gotoxy(3,10);write(' <<< Elija Opcion >>>');
end;
until opcion = '3';
end;

begin
clrscr;
menu;
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

pilas y colas

Publicado por julia (9 intervenciones) el 22/09/2011 21:08:50
gracias!!!!!!!!!1 me sirvio lo q me mandeste
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

pilas y colas

Publicado por julia (9 intervenciones) el 22/09/2011 21:12:03
El departamento de alumnado necesita trabajar con los datos
de los alumnos de la materia Algoritmos y Estructuras de datos II, para ello
implementa una lista simplemente enlazada, donde cada nodo guardará el nro
de libreta universitaria.
a) Crear una función que genere la lista
b) Crear un procedimiento que permita insertar nodos a la lista (para
insertar cada nodo debe verificar que la lista no se encuentre vacía)
c) Crear un procedimiento que permita insertar nodos al final de la lista
(para insertar cada nodo debe verificar que la lista no se encuentre
vacía)
d) Crear un procedimiento que permita Recorrer e imprimir en la pantalla
cada elemento de la lista desde el primero al último.
e) Crear una función que permita calcular la longitud de la lista (número de
elementos que contiene).
f) Crear un procedimiento que permita eliminar un nodo al final de la lista
que coincida con un determinado nro de libreta.
g) Crear un procedimiento que permita eliminar el último o el primer nodo
de la lista.
h) Crear un procedimiento que permita buscar un determinado nro de
libreta en la lista.
i) Crear un procedimiento que permita eliminar todos los elementos de la
lista.
j) Crear un menú principal que contenga todos los ítems anteriormente
solicitado.
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

pilas y colas

Publicado por ramon (2158 intervenciones) el 25/09/2011 22:54:18
{Te vale con esto o te paso mas}

program estructu;
uses
crt;
type
puntlibreta = ^libreta;
libreta = record
numero : word;
sig : puntlibreta;
end;

var
alumno, alumno1, alumno2 : puntlibreta;


function datos : word;
var
tecla : char;
dnume : string[10];
error, cont : integer;
num : word;
begin
cont := 1;
fillchar(dnume,11,' ');
dnume[0] := chr(10);
datos := 0;
gotoxy(5,5);write('Entre el N§ Libreta Universitaria : ');
gotoxy(41,5);
repeat
tecla := readkey;
if tecla in[#48..#57] then
begin
dnume[cont] := tecla;
dnume[0] := chr(cont);
gotoxy(40 + cont,5);write(dnume[cont]);
cont := cont + 1;
if cont > 10 then
cont := 10;
end;
if tecla = #8 then
begin
cont := cont - 1;
if cont < 1 then
cont := 1;
dnume[cont] := ' ';
dnume[0] := chr(cont);
gotoxy(40 + cont,5);write(dnume[cont]);
end;
until tecla = #13;
if cont > 1 then
begin
val(dnume,num,error);
datos := num;
end;
end;

procedure entrada;
begin
if alumno1 = nil then
begin
new(alumno);
alumno^.numero := datos;
alumno1 := alumno;
alumno^.sig := nil;
end
else
begin
alumno2 := alumno;
new(alumno);
alumno^.numero := datos;
alumno2^.sig := alumno;
alumno^.sig := nil;
end;
end;

procedure listar_alumnos;
var
alum : puntlibreta;
xn, yn : integer;
begin
xn := 15;
yn := 3;
alum := alumno1;
gotoxy(xn, yn - 2);write('*** Alumnos ***');
repeat
gotoxy(xn, yn);write(alum^.numero);
yn := yn + 1;
if yn > 24 then
begin
writeln;
yn := yn - 1;
end;
alum := alum^.sig;
until alum = nil;
readln;
end;


procedure marcador(xm, ym : integer; estado : boolean);
begin
if estado = true then
begin
gotoxy(xm,ym);write('----------------');
gotoxy(xm - 1,ym + 1);write(':');
gotoxy(xm + 16,ym + 1);write(':');
gotoxy(xm,ym + 2);write('----------------');
end
else
begin
gotoxy(xm,ym);write(' ');
gotoxy(xm - 1,ym + 1);write(' ');
gotoxy(xm + 16,ym + 1);write(' ');
gotoxy(xm,ym + 2);write(' ');
end;
end;

procedure menualumnos;
var
opcion, xp, yp : integer;
tec : char;
salir : boolean;
begin
clrscr;
xp := 9;
yp := 6;
opcion := 1;
salir := false;
gotoxy(10,5);write('**** Menu Alumnos ****');
gotoxy(10,7);write('Crear Lista');
gotoxy(10,9);write('Insertar Lista');
gotoxy(10,11);write('Recorrer Lista');
gotoxy(10,13);write('Longitud Lista');
gotoxy(10,15);write('Eliminar Alumno');
gotoxy(10,17);write('Buscar Alumno');
gotoxy(10,19);write('Eliminar Todo');
gotoxy(10,21);write('Salir');
marcador(xp,yp,true);
repeat
tec := readkey;
marcador(xp,yp,false);
if tec = #80 then
begin
opcion := opcion + 1;
if opcion > 8 then
opcion := 8;
yp := yp + 2;
if yp > 20 then
yp := 20;
end;
if tec = #72 then
begin
opcion := opcion - 1;
if opcion < 1 then
opcion := 1;
yp := yp - 2;
if yp < 6 then
yp := 6;
end;
if tec = #13 then
begin
clrscr;
case opcion of
1 : entrada;
2 :;
3 : listar_alumnos;
4 :;
5 :;
6 :;
7 :;
8 : salir := true;
end;
clrscr;
gotoxy(10,5);write('**** Menu Alumnos ****');
gotoxy(10,7);write('Crear Lista');
gotoxy(10,9);write('Insertar Lista');
gotoxy(10,11);write('Recorrer Lista');
gotoxy(10,13);write('Longitud Lista');
gotoxy(10,15);write('Eliminar Alumno');
gotoxy(10,17);write('Buscar Alumno');
gotoxy(10,19);write('Eliminar Todo');
gotoxy(10,21);write('Salir');
end;
marcador(xp,yp,true);
until salir = true;
end;


begin
clrscr;
textcolor(15);
alumno1 := nil;
menualumnos;
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