Vous êtes sur la page 1sur 7

Pseudocdigo Problema_1

VAR
cantCifras: Arreglo [0..9,1..2] de entero
num,i,j: entero
INICIO
(*Inicialmente las cantidades repetidas de las cifras son 0*)
Desde i1 hasta 9
Desde j1 hasta 2
cantCifras[i,j]0
fin_desde
fin_desde
Desde i1 hasta 2
(*Validar el nmero*)
Repetir
Leer (num)
hasta_que (num>=1000)
(*Guardar cifras repetidas*)
Repetir
cantCifras[(nummod10),i]cantCifras[(nummod10),i]+1
numnumdiv10
hasta_que (num=0) hacer
fin_desde
i9 : num0
Mientras (i>=0) hacer
Si ((CantCifras[i,1]0) and (CantCifras[i,2]0)) entonces
Desde j1 hasta CantCifras[i,2]
numnum*10+i
fin_desde
Sino
Si (CantCifras[i,1]0) entonces
Desde j1 hasta CantCifras[i,1]
numnum*10+i
fin_desde
fin_si
Si (CantCifras[i,2]0) entonces
Desde j1 hasta CantCifras[i,2]
numnum*10+i
fin_desde
fin_si
fin_si
ii-1
fin_mientras
(*Respuesta*)
Escribir ("El nuevo nmero es:",num)
FIN












Pseudocdigo Problema_2
VAR
codigo: Arreglo ['A'..'C',1..15,1..10] de entero
ventaMensual: Arreglo ['A'..'C',1..15,1..10,1..12] de real
ventaAnual: Arreglo ['A'..'C',1..15,1..10] de real
numeroSucursales: Arreglo ['A'..'C'] de entero
numeroEmpleados: Arreglo ['A'..'C',1..15] de entero
mayorVenta: Arreglo ['A'..'C'] de real
car: caracter
i,j,k: entero
INICIO
(*Inicialmente la venta anual de cada empleado es cero*)
Desde car'A' hasta 'C'
Desde i1 hasta 15
Desde j1 hasta 10
ventaAnual[car,i,j]0
fin_desde
fin_desde
fin_desde
(*Almacenamos los cdigos y las ventas mensuales(en un ao) de los empleados*)
Desde car'A' hasta 'C'
mayorVenta[car]0
Repetir
Leer (numeroSucursales[car])
hasta_que ((numeroSucursales[car]>=2) and (numeroSucursales[car]<=15)) hacer
Desde i1 hasta numeroSucursales[car]
Repetir
Leer (numeroEmpleados[car,i])
hasta_que ((numeroEmpleados[car,i]>=0) and (numeroEmpleados[car,i]<=15)) hacer
Desde j1 hasta numeroEmpleados[car,i]
Repetir
Leer (codigo[car,i,j])
hasta_que ((codigo[car,i,j]>=1000) and (codigo[car,i,j]<=9999)) hacer
Desde k1 hasta 12
Leer (ventaMensual[car,i,j,k])
ventaAnual[car,i,j]ventaAnual[car,i,j]+ventaMensual[car,i,j,k]/12
fin_desde
Si (ventaAnual[car,i,j]>mayorVenta[car]) entonces
mayorVenta[car]ventaAnual[car,i,j]
fin_si
fin_desde
fin_desde
fin_desde
(*Presentamos los cdigos de los vendedores con mayor venta anual por ciudad*)
Desde car'A' hasta 'C'
Desde i1 hasta numeroSucursales[car]
Desde j1 hasta numeroEmpleados[car,i]
Si (mayorVenta[car]=ventaAnual[car,i,j]) entonces
Escribir ("Codigo del vendedor: ",codigo,"Ciudad: ",car)
fin_si
fin_desde
fin_desde
fin_desde
FIN







Pseudocdigo Problema_4
VAR
N,a,b,t: entero
INICIO
Repetir
Leer (N)
hasta_que (N>0) hacer
b1 : t0
Mientras ((b*b)<=N) hacer
Desde a0 hasta b
Si ((a*a+b*b)=N) entonces
Escribir ("a=",a,"b=",b)
tt+1
fin_si
fin_desde
bb+1
fin_mientras
Escribir ("t=",t)
FIN

























Pseudocdigo Problema_6
VAR
codigo: Arreglo [1..60] de entero
cantidadProyectos,i,j,k,aux: entero
INICIO
Desde i1 hasta 3
Repetir
Leer (cantidadProyectos)
hasta_que (cantidadProyectos>=0 and cantidadProyectos<=20) hacer
Desde j(20*(i-1)+1) hasta (20*(i-1)+cantidadProyectos)
Repetir
Leer (codigo[j]) (*Validamos y almacenamos el cdigo*)
hasta_que (codigo[j]>=1000 and codigo[j]<=9999) hacer
fin_desde
(*Ordenamos los codigos en forma descendente*)
Desde j(20*(i-1)+1) hasta (20*(i-1)+cantidadProyectos-1)
Desde kj+1 hasta ((20*(i-1)+cantidadProyectos)
Si (codigo[j]<codigo[k]) entonces
auxcodigo[j]
codigo[j]codigo[k]
codigo[k]aux
fin_si
fin_desde
fin_desde
(*Presentamos los cdigos de los proyectos inscritos*)
En_caso (i)
1: Escribir ("Proyecto: Nanotecnologa")
2: Escribir ("Proyecto: Recursos Renovables")
3: Escribir ("Proyecto: Inclusin Social")
fin_caso
Desde i(20*(i-1)+1) hasta (20*(i-1)+cantidadProyectos)
Escribir ("Cdigo: ",codigo[i])
fin_desde
fin_desde
FIN
















Pseudocdigo Problema_8
VAR
edadRepetida: Arreglo [0..200] de entero
edad,i,n: entero
INICIO
(*Validamos n*)
Repetir
Leer (n)
hasta_que (n>0)
(*Inicialmente la cantidad de repeticiones es cero*)
Desde i1 hasta 200
edadRepetida[i]0
fin_desde
Desde i1 hasta n
Repetir
Leer (edad)
hasta_que (edad>=0 and edad<=200)
edadRepetida[edad]edadRepetida[edad]+1
fin_desde
Escribir ("Nmero de repeticiones de la edad 18: ",edad[18])
Escribir ("Nmero de repeticiones de la edad 20: ",edad[20])
Escribir ("Nmero de repeticiones de la edad 23: ",edad[23])
FIN






















Pseudocdigo Problema_20
VAR
punto: Arreglo ['A'..'D','x'..'y'] de real (*para guardar los 4 puntos*)
V: Arreglo [1..3,'x'..'y'] de real (*aqu se almacenar los 3 vectores*)
i,j: entero
car1,car2: caracter
volumen: real
INICIO
(*Almacenamos las 3 componentes de los cuatro puntos(A,B,C,D)*)
Desde car1'A' hasta 'D'
Desde car2'x' hasta 'z'
Leer (punto[car1,car2])
fin_desde
fin_desde
(*Con los 4 puntos definimos 3 vectores*)
(*V1=AB, V2=AC, V3=AD*)
i1
Desde car1'B' hasta 'D'
Desde car2'x' hasta 'z'
V[i,'car2']punto['A',car2]-punto[car1,car2]
fin_desde
ii+1
fin_desde
(*Calculamos el volumen del slido con el triple producto escalar [V1V2V3], el cual
simplemente es la determinante de la ordenacin de las componentes de los vectores en
filas en una matriz, si el valor de la determinante es cero entonces los 4 puntos no
forman un slido, pero si la determinante es diferente de 0, entonces los 4 puntos forman
un slido y su volumen es el valor absoluto de sta entre 6*)
(* |V1x V1y V1z|*)
(* [V1V2V3]=|V2x V2y V2z|*)
(* |V3x V3y V3z|*)
volumen(V[1,'x']*(V[2,'y']*V[3,'z']-V[3,'y']*V[2,'z'])-(V[1,'y']*(V[2,'x']*V[3,'z']-
V[3,'x']*V[2,'z']))+V[1,'z']*(V[2,'x']*V[3,'y']-V[3,'x']*V[2,'y']))/6
Si (volumen=0) entonces
Escribir ("Los 4 puntos no forman una figura tridimensional.")
Sino
Si (volumen>0) entonces
Escribir ("Los 4 puntos forman una figura tridimensional.")
Escribir ("Su volumen es: ",volumen)
Sino
volumen -volumen
Escribir ("Los 4 puntos forman una figura tridimensional.")
Escribir ("Su volumen es: ",volumen)
fin_si
fin_si
FIN











Pseudocdigo Problema_38
VAR
Punto: Arreglo [1..50,1..2] de real (*Punto de la forma (x,y)*)
area: real
A,B,C,i,n: entero
continuar,semiplano1,semiplano2: booleano
INICIO
(*Nos centraremos en analizar el polgono convexo de "n" lados que se forma al unir los
puntos, con ello evitaramos el anlisis de polgonos complejos*)
(*Deberemos de tener en consideracin que un lado del polgono, si se extiende
infinitamente divide al plano en 2 semiplanos, el cual en uno de los semiplanos
encontraremos todos los puntos del vrtice, pero mas no en el otro*)
(*Otra consideracin es la siguiente: Para 3 puntos en el plano XY, A(a1,a2),B(b1,b2) y
C(c1,c2), el rea del tringulo ABC se calcula con la siguiente frmula rea=(a1(b2-
c2)+b1(c2-a2)+c1(a2-b2))/2; este valor puede ser positivo, cero o negativo. A su vez, el
segmento BC divide al plano en 2 semiplanos, pudiendo el punto A estar a la derecha o
izquierda de la recta que contiene al segmento(BC) o sobre ella, por ello consideraremos
que si el valor del rea sale con valor positivo entonces diremos que el punto A se
encuentra en el semiplano derecho, si el valor del rea es 0, consideraremos que el punto
A se encuentra a lo largo de la recta que contiene al segmento BC, y por ltimo, si el
valor del rea es negativo diremos que el punto A se encuentra en el semiplano izquierdo*)
(*Nuestro problema se simplifica si encontramos 3 puntos colineales o cuando el rea de
esos 3 puntos es 0 o cuando demostramos que la recta que contiene a un segmento de la
forma BC no puede dividir al plano en 2 semiplanos, de tal forma que un semiplano no
contenga ningn punto; es decir para un punto A ledo, el rea del tringulo ABC es
positivo y para otro punto A' ledo, el rea del tringulo A'BC es negativo*)
Repetir
Leer (n)
hasta_que (n>0 and n<=50)
B1 : continuarV
Mientras (B<=n and continuar) hacer
C1 :
Mientras (C<=n and continuar) hacer
A1 : semiplano1F : semiplano2F
Mientras (A<=n and continuar) hacer
Si ((AB) and (AC) and (BC) ) entonces
(*A=(a1,a2);B=(b1,b2);C=(c1,c2) --> reaABC=(a1(b2-c2)+b1(c2-a2)+c1(a2-b2))/2*)
area(Punto[A,1]*(Punto[B,2]-Punto[C,2])+Punto[B,1]*(Punto[C,2]-
Punto[A,2])+Punto[C,1]*(Punto[A,2]-Punto[B,2]))/2
Si (area=0) entonces
continuarF
fin_si
Si (area>0) entonces
semiplano1V
Sino
semiplano2V
fin_si
fin_si
AA+1
fin_mientras
Si ( (semiplano1=V and semiplano2=F) or (semiplano1=F and semiplano2=V))
entonces
continuarF
fin_si
CC+1
fin_mientras
BB+1
fin_mientras
Si (continuar=V) entonces
Escribir ("Los vrtices corresponden a un polgono de ",n," lados")
Sino
Escribir ("Los vrtices no corresponden a un polgono de ",n," lados")
fin_si
FIN

Vous aimerez peut-être aussi