sábado, 3 de octubre de 2009

1. Clasificación de carácter.

Lea un carácter y clasifíquelo según.
A a Z Sletras
0 a 9 Snumeros
Otro Sespeciales
Cada pila posee un tamaño de 30 posiciones y se leen 20 caracteres.

Begin
Stack sletras [30]
Stack snumeros [30]
Stack sespecial [30]
cont = 1
While (cont < = 20) do
Read carac
If (carac > = 0) and (carac < = 9) then
push (snumeros, carac)
Else
If (carac > = a) and (carac < = z) then
push (sletras, carac)
Else
push (sespecial, carac)
End if
End if
cont = cont + 1
End while
End

push (snumeros, carac)
top[snumeros] <– top[snumeros] + 1
snumeros[top[snumeros]] <– carac

push (sletras, carac)
top[sletras] <– top[sletras] + 1
sletras [top[sletras]] <– carac

push (sespecial, carac)
top[sespecial] <– top[sespecial] + 1
sespecial [top[sespecial]] <– carac

2. Salario Neto.

Lea el Vrhora de un trabajador. Calcule el valor del salario mensual, tenga en cuenta que si el salario es menor o igual a dos salarios mínimos tiene derecho a un auxilio de transporte en otro caso no. Calculado así el salario neto, agréguelo a Qneto.
Se leen 25 Vrhora, Qneto posee 30 posiciones, calcule el promedio de los salarios y retornelos.

Begin
queue qneto[30]
pros = 0
cont = 1
While (cont < = 25) do
Read vhora, nhora
sal = vhora * nhora
If (sal < = 980000) then
sal = sal + 55000
End if
enqueue (qneto,sal)
pros = pros + sal
cont = cont + 1
End while
pros = pros / 25
Return pros
End

enqueue (qneto, sal)
qneto[tail [qneto]] <– sal
if tail[qneto] = length[qneto] then
tail[qneto] <– 1
else
tail[qneto] <– tail[qneto] + 1
end if

3. 50 cantidades de productos.

Lea 50 cantidades de productos, si la cantidad es inferior a 6 agreguela a la cola qpedir sino en qnivelado.
Calcule el promedio de cada cola y retorne el resultado. No olvides borrar dos de las cantidades en cada cola. Cada cola posee 60 posiciones.

Begin
Queue qpedir [60]
Queue qnivel[60]
prope = 0
npe = 0
proni = 0
nni = 0
cont = 1
While (cont < = 50) do
Read canti
If (canti < 6) then
enqueue (qpedir,canti)
prope = prope + canti
npe = npe + 1
Else
enqueue (qnivel, canti)
proni = proni + canti
nni = nni + 1
End if
cont = cont + 1
End while
prope = prope / npe
proni = proni / nni
While (cont < = 52) do
dequeue (qnivel)
dequeue (qpedir)
cont = cont + 1
End while
Return prope, proni
End

enqueue (qpedir,canti)
qpedir [tail [qpedir]] <– canti
if tail[qpedir] = length[qpedir] then
tail[qpedir] <– 1
else
tail[qpedir] <– tail[qpedir] + 1
end if

enqueue (qnivel,canti)
qnivel [tail [qnivel]] <– canti
if tail[qnivel] = length[qnivel] then
tail[qnivel] <– 1
else
tail[qnivel] <– tail[qnivel] + 1
end if

dequeue (qpedir)
x <– qpedir [head[qpedir]]
if head [qpedir] = length[qpedir] then
head[qpedir] <– 1
else
head[qpedir] <– head[qpedir] + 1
end if


dequeue (qnivel)
x <– qnivel[head[qnivel]]
if head [qnivel] = length[qnivel] then
head[qnivel] <– 1
else
head[qnivel] <– head[qnivel] + 1
end if

4. 25 Alumnos

Se tiene 25 alumnos donde para cada uno se lee 4 notas, se sabe que cada nota tiene el siguiente porcentaje 20%, 30% , 30%, 20%. Calcule la definitiva y agréguela a la pila Sdefinitivas. Luego borre dos de las notas, la pila posee 30 posiciones.

Begin
Stack sdefinitivas [30]
cont = 1
While (cont < = 25) do
Read n1, n2, n3, n4
n1 = n1 * 20%
n2 = n2 * 30%
n3 = n3 * 30%
n4 = n4 * 20%
def = n1 + n2 + n3 + n4
push (sdefinitivas, def)
cont = cont + 1
end while
cont = 1
while (cont < = 2) do
pop(sdefinitivas)
cont = cont + 1
end while
end
push (sdefinitivas, def)
top[sdefinitivas] <– top[sdefinitivas] + 1
sdefinitivas [top[sdefinitivas]] <– def

pop(sdefinitivas)
if stack-empty(sdefinitivas) then
error “underflow”
else
top[sdefinitivas] <– top[sdefinitivas] – 1
end if
return sdefinitivas [top[sdefinitivas] + 1 ]


stack – empty(sdefinitivas)
if top[sdefinitivas] = 0 then
return TRUE
else
return FALSE
end if