Está en la página 1de 16

Algortmica I

Programacin Estructurada:
Estructuras de control Iterativa Problemas

Profesor John Ledgard Trujillo Trejo

Ingeniera de Sistemas e Informtica Departamento de Ciencias de la Computacin Curso 2013-I

Problema 1
Hacer un algoritmo que calcule el monto en soles del recibo del agua en una vivienda dado el nmero de litros gastados, siendo el sistema de cobro: - la cuota fija mensual es de 30 soles - los primeros 50 litros son gratis - entre 50 y 200 litros se cobra el litro a 0.3 soles - a partir de 200 litros se cobra el litro a 0.45 soles

DATOS DE ENTRADA: consumo (en litros) DATOS DE SALIDA: monto (en soles)
Algoritmo pago_consumo_de_agua var real : consumo, monto
Inicio escribir(Ingrese consumo de agua: ) leer(consumo) si (consumo <= 50) entonces monto 30 sino si (consumo <= 200) entonces monto 30 + 0.3*(consumo 50) sino monto 30 + 0.3*(150) + 0.45*(consumo 200) fin_si fin_si escribir(El monto a pagar del agua es: , monto) fin
Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 2
Hacer un algoritmo que calcule el monto en soles del recibo del agua de las viviendas de una Urbanizacin con 2550 usuarios. Para el pago considere el consumo de cada usuario en litros, siendo el sistema de cobro: - la cuota fija mensual es de 30 soles - los primeros 50 litros son gratis - entre 50 y 200 litros se cobra el litro a 0.3 soles - a partir de 200 litros se cobra el litro a 0.45 soles
Algoritmo pago_consumo_de_agua_Urbanizacin
Const USUARIOS = 2550 Var real : consumo, monto entero: i

Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Inicio consumo 0 para (i = 1 hasta i = USUARIOS) hacer monto 0 escribir(Ingrese consumo usuario , i, : ) leer(consumo) si (consumo <= 50) entonces monto 30 sino si (consumo <= 200) entonces monto 30 + 0.3*(consumo 50) sino monto 30 + 0.3*(150) + 0.45*(consumo 200) fin_si fin_si escribir(El monto a pagar usuario , i, es: , monto) fin_para fin

Problema 2
Algoritmo pago_consumo_de_agua_Urbanizacin2
Const USUARIOS = 2550 Var real : consumo, monto entero: cont Inicio consumo 0 cont 1 mientras (cont <= USUARIOS) hacer monto 0 escribir(Ingrese consumo usuario , cont, : ) leer(consumo) si (consumo <= 50) entonces monto 30 sino si (consumo <= 200) entonces monto 30 + 0.3*(consumo 50) sino monto 30 + 0.3*(150) + 0.45*(consumo 200) fin_si fin_si escribir(El monto a pagar usuario , cont, es: , monto) cont cont + 1 fin_mientras fin

Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 2
Algoritmo pago_consumo_de_agua_Urbanizacin3
Const USUARIOS = 2550 Var real : consumo, monto entero: cont Inicio consumo 0 cont 1 repetir monto 0 escribir(Ingrese consumo usuario , cont, : , consumo) leer(consumo) si (consumo <= 50) entonces monto 30 sino si (consumo <= 200) entonces monto 30 + 0.3*(consumo 50) sino monto 30 + 0.3*(150) + 0.45*(consumo 200) fin_si fin_si escribir(El monto a pagar usuario , cont, es: , monto) cont cont + 1 hasta_que (cont >USUARIOS) fin

Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 3
Escribir un algoritmo que dados tres nmeros que representan 3 longitudes nos diga si existe y un tringulo que tenga esas dimensiones ( Para que haya un tringulo que tenga esas dimensiones, la suma de cualesquiera dos lados tiene que ser mayor que el tercer lado)

DATOS DE ENTRADA: num1, num2, num3 (positivos)


Algoritmo Determinar_tipo_tringulo var real : num1, num2, num3

Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

entero: t Inicio repetir escribir(Ingrese numero 1: ) leer (num1) escribir(Ingrese numero 2: ) leer (num2) escribir(Ingrese numero 3: leer (num3) hasta_que(num1>0 y num2>0 y num3>0) si ((num1+num2>mun3)y(num1+num3>num2)y(num2+num3>num1)) entonces escribir(existe el tringulo) t1 sino escribir(No existe el tringulo) t0 fin_si si (t = 1) entonces si ((num1=num2)y (num2=num3)) entonces escribir(El tringulo es equilatero) sino si ((num1<>num2)y(num2<>num3)y(num1<>num3)) entonces escribir(El tringulo es escaleno) sino escribir(El tringulo es isosceles) fin_si fin_si fin_si

Problema 4
Hacer un algoritmo para calcular los salarios semanal de unos empleados a los que se les paga 15 euros por hora si stas no superan las 35 horas. Cada hora por encima de 35 se considerar extra y se paga a 22 . El algoritmo pide las horas del trabajador y devuelve el salario que se le debe pagar. Adems el programa debe preguntar si deseamos calcular otro salario, si es as el programa se vuelve a repetir

DATOS DE ENTRADA: numh DATOS DE SALIDA: salario Algoritmo Calculo_salario


var entero: numh real : salario caracter: opcion

Inicio repetir escribir(Ingrese numero de horas trabajadas: ) leer(numh) hasta_que(numh>0) repetir salario 0 si (numh <= 35) entonces salario numh*15 sino salario numh*15 + (numh 35)*22 fin_si escribir (El monto del salario es: , salario) escribir (Desea seguir calculando salarios?(Si=s, NO=n): ) leer (opcion) hasta_que((opcion =n) o (opcion =N) fin

Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 5
Hacer un algoritmo para determinar si un nmero natural es primo. Un nmero es primo si es divisible por la unidad y por si mismo.

DATOS DE ENTRADA: num (positivo)


Algoritmo nmero_primo var entero: num, noesprimo, i
Inicio repetir escribir(Ingrese numero: leer(num) hasta_que(num>1)
noesprimo 1 si (num = 2) entonces escribir (El nmero , num, es primo) sino i2 mientras ((i < num) y (noesprimo=1)) hacer si (num mod i = 0) entonces noesprimo 0 fin_si ii+1 fin_mientras fin_si si (noesprimo=1) entonces escribir(El numero , num, no es primo) sino escribir(El numero , num, es primo) fin_si fin

Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 6
Hacer un algoritmo para determinar el factorial de un nmero. El factorial de un nmero se calcula de la siguiente manera: n! = 1x2x3x4xx(n-1)xn

DATOS DE ENTRADA: num (positivo) DATOS DE SALIDA: factorial

Algoritmo calculo_factorial
var entero: num, factorial, i

Inicio repetir escribir(Ingrese numero: ) leer(num) hasta_que(num>=0) si ((num = 0) o (num =1) entonces factorial 1 sino factorial 1 para (i = 2 hasta i = num) hacer factorial factorial * i fin_para fin_si escribir (El factorial del nmero , num, es: , factorial) fin

Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 7
Escribir un algoritmo que calcule la serie de Taylor de la funcin seno, sabiendo que la funcin seno desarrollada en serie de Taylor tiene la forma

DATOS DE ENTRADA: ngulo, n (numero de trminos de la sumatoria) DATOS DE SALIDA: suma DATOS INTERMEDIOS: factorial, pox (potencia de x), term (valor del trmino) Algoritmo calculo_serie_Taylor

var entero: n real: ang, suma, fac, pox, term


Inicio repetir escribir(Ingrese numero de trminos: leer(n) hasta_que(n>0)

escribir(Ingrese el ngulo: ) leer(ang) suma 0


Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 7
para ( i = 1 hasta i = n) hacer //Calculo de la potencia de x pox 1 para (j = 1 hasta j = 2*i-1) hacer pox pox*x fin_para
//Calculo factorial fac 1 para (j = 1 hasta j = 2*i-1) hacer fac fac *j fin_para

//Calculo del termino term pox/fac //Calculo de la suma si (i mod 2 = 0) entonces suma suma - term sino suma suma + term fin_si fin_para escribir(La serie de Taylos para el SENO de , ang, es : , suma) fin
Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 8
Escribir un algoritmo que calcule el nmero de dgitos que tiene un numero entero.

DATOS DE ENTRADA: num (numero entero) DATOS DE SALIDA: numdig (nmero de digitos)

Algoritmo Calculo_nmero_digitos
var entero: num, numdig, n

Inicio escribir(Ingrese numero: ) leer(num) numdig 0 n num repetir n n/10 numdig numdig +1 hasta_que(n = 0) escribir (El nmero de digitos del , num, es , numdig) fin

Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 9
Escribir un algoritmo que determine si un nmero es palndromo (capicua). En matemticas, un nmero palndromo se refiere a cualquier nmero simtrico que, por ello, se lee igual de izquierda a derecha que de derecha a izquierda. Ejemplos: 121, 4554, etc.
DATOS DE ENTRADA: num (numero entero) , num1 DATOS INTERMEDIOS: numdig, dig
Algoritmo Calculo_nmero_capicua
var entero: num, num1, numdig, dig

Inicio escribir(Ingrese numero: ) leer(num) numdig 0 num1 0 n num repetir n n/10 numdig numdig +1 hasta_que(n = 0) n num numdig numdig - 1 mientras (n <>0) hacer dig n mod 10 n n/10 mum1 num1 + dig*10 (numdig) numdg numdig - 1 fin_mientras si ( num1 = num) entonces escribir(El numero , num, es capicua) sino escribir(El numero , num, no es capicua) fin_si fin
Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Problema 10
Escribir un algoritmo que determine el dgito central de un nmero impar de cifras. Ejemplo el digito central de 23567 es 5.

DATOS DE ENTRADA: num (numero entero) DATOS INTERMEDIOS: numdig DATOS DE SALIDA: digcen Algoritmo Calculo_digitocentral_numero
var entero: num, numdig, digcen, n

Inicio escribir(Ingrese numero: ) leer(num) numdig 0 n num repetir n n/10 numdig numdig +1 hasta_que(n = 0) m numdig si (numdig mod 2 = 0) entonces escribir(El nmero de digitos del num, es par) sino n num repetir dig n mod 10 n n/10 m m -1 hasta_que(m = numdig/2) escribir(El digito central del numero , num, es , dig) fin_si fin
Algortmica I: John Ledgard Trujillo Trejo Ingeniera de Sistemas e Inf ormtica

Bibliografa Fundamentos de programacin, Algoritmos y Estructura de datos y Objetos, Joyanes, Luis, Editorial McGraw Hill, 2003. Metodologa de la programacin estructurada, Joyanes, Luis, Editorial McGraw Hill, 1993. El lenguaje de programacin C, Kernighan y Ritchie, Editorial Prentice Hall, 1991. Como programar en C/C++ , H.M. Deitel and P.J. Deitel, Ed. Prentice Hall, 1998, 6ta. edicin

1.14

Preguntas ?

1.15