Programación I - Microdiseño

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 49

Universidad de Pamplona 1

Facultad de Ingenierías y Arquitectura


Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Programación 1

Objetivo del Curso:


Adquirir habilidad en la solución de problemas por medio del computador, mediante el desarrollo del pensamiento algorítmico.
Desarrollar habilidades en el uso de por lo menos un lenguaje y una herramienta de programación.
Desarrollar aptitudes de análisis, diseño y codificación de soluciones a problemas básicos de programación.

Contenidos del curso


1. Generalidades
1.1Conceptos de máquina y computador
1.2 Componentes funcionales del computador
1.2.1 Software
1.2.1.1 Conceptos
1.2.1.2 Clasificación
1.2.2 Hardware
1.2.2.1 Concepto
1.2.2.2 División Funcional (CPU, Memoria y dispositivos de entrada y salida)
1.3 Representación de la información
1.3.1 Sistemas de numeración
1.3.1.1 Sumativos
1.3.1.2 De valor posicional
1.3.2 Sistema Binario
1.3.3 Tipos de datos

2. Resolución de Problemas
2.1. Metodología para la resolución de problemas
2.2 Conceptos preliminares (Algoritmo, dato, variable, constante, expresión, tipos de expresiones)
2.3 Diagramas de Flujo
2.4 Estructuras de Control
2.4.1 Secuenciales o lineales
2.4.2 De selección
2.4.3 De repetición (Para, Mientras que, hacer mientras)
2.5 Programación modular
2.5.1 funciones
2.5.2 Parámetros por valor

3. Lenguaje de programación
3.1 Fundamentos de C
3.2 Herramienta de programación en C (dev c++)
3.3 Procedimientos para la edición, compilación y ejecución de programas

Bibliografía Recomendada
Fundamentos de Programación, Algoritmos, Estructuras de datos y Objetos, Luis Joyanes Aguilar, Tercera edición. Editorial
McGraw Hill.
Informática Básica, Eduardo Alcalde y Miguel Garcia, Segunda edición, Editorial McGraw Hill.
Fundamentos de Programación, Algoritmos y Estructuras de datos, Luis Joyanes Aguilar, Segunda edición. Editorial McGraw Hill.
Fundamentos de Programación, Libro de problemas, Luis Joyanes Aguilar, Editorial McGraw Hill.
Turbo C/C++ 3.1 Manual de referencia, Herbert Schildt, McGraw Hill
Universidad de Pamplona 2
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

Contenidos de la Guía

1 GENERALIDADES ................................................................................................................................................................. 3
1.1 REPRESENTACIÓN DE DATOS EN EL COMPUTADOR ............................................................................................................. 5
1.2 SISTEMAS DE NUMERACIÓN ............................................................................................................................................... 5
1.3 SISTEMAS DE NUMERACIÓN SUMATIVOS O ADITIVOS ......................................................................................................... 5
1.4 SISTEMAS DE NUMERACIÓN DE VALOR POSICIONAL ........................................................................................................... 6
1.5 SISTEMA BINARIO PARA INFORMÁTICA .............................................................................................................................. 6
1.6 OPERACIONES CON NÚMEROS BINARIOS ........................................................................................................................... 6
1.7 CONCEPTOS PRELIMINARES PARA LA PROGRAMACIÓN ....................................................................................................... 9
1.8 ESTRUCTURAS DE CONTROL ............................................................................................................................................. 11
2 ESTRUCTURAS DE CONTROL LINEALES O SECUENCIALES (ENTRADA, ASIGNACIÓN Y SALIDA) ......... 12

3 ESTRUCTURAS DE SELECCIÓN O CONDICIONALES............................................................................................... 14

4 ESTRUCTURAS REPETITIVAS......................................................................................................................................... 24

5 PROGRAMACIÓN MODULAR (FUNCIONES) ............................................................................................................... 38

6 RESUMEN DE NOTACIONES DE LAS ESTRUCTURAS DE CONTROL................................................................... 48


Universidad de Pamplona 3
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

1 Generalidades
1- Defina y diferencie los siguientes conceptos generales:
1. Máquina.
1.1. Maquina Abstracta.
1.2. Maquina concreta.
2. Computador.
2.1. Software.
2.1.1. Lenguaje de programación.
2.1.2. Sistemas de información.
2.1.3. Software Aplicativo.
2.1.4. Sistema Operativo.
2.2. Hardware.
2.2.1. Dispositivos E/S.
2.2.2. CPU (Unidad Central de Procesamiento).
2.2.3.2. Unidad de control (UC).
2.2.3.3. Unidad Aritmético Lógica (ALU)
2.2.3.1 Memoria
2.2.3.1.1. Memoria de Datos.
2.2.3.1.2 Memoria de Instrucciones.
3. Algoritmo.
4. Traductores de Lenguaje
4.1. Compilador.
4.2. Interprete

2-Describir lo que representa cada una de siguientes figuras

Usuario

Software
Sistemas de Aplicativo Lenguajes de
Información Programación

Sistemas Operativos

Hardware
Universidad de Pamplona 4
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Usuario
Da y recibe información del
computador, cuando ejecuta un
programa, ya construido por un
programador

Dispositivos Dispositivos
de Entrada de datos de Salida de datos
Computador
Unidad Central de Memoria de Memoria de
Solo ejecuta las Instrucciones Datos
instrucciones, procesamiento
almacenadas en a
la memoria de Unidad de a
instrucciones y Control 10
previamente b b
diseñadas por el 12
c=a+b
programador
Unidad c
c
Aritmetico-lógica 22

Programador
Diseña
los programas

3-De acuerdo al siguiente gráfico que representa las fases en el desarrollo de un programa software, explique en que consiste cada
una de las fases y qué actividades hay que desarrollar en cada una de ellas.
Universidad de Pamplona 5
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

Enunciados claros, sin ambigüedad


de la situación que se quiere automatizar
mediante la construcción de un programa
de computador

Identificación de los datos que el usuario tiene que proveer


al computador cuanto el programa esté ya construido (datos de entrada),
y de los datos que el computador entrega al usuario
Problema a solucionar como solución del problema (datos de salida)

Análisis Descripción de los pasos que debe seguir el computador (algoritmo)


para a partir de los datos de entrada, dé solución al problema.
Diseño Estos pasos pueden ser descritos mediante diferentes técnicas
como diagramas de flujo o seudocódigo
Codificación

Prueba Traducción de los algoritmos especificados en el diseño


a un lenguaje de alto nivel entendible por el computador
Implantación en este caso a C

Mantenimiento

Reingeniería Verificación de que el algoritmo,


soluciona el problema.

1.1 Representación de datos en el computador


1.2 Sistemas de Numeración
Los sistemas de numeración son las distintas formas de representar cantidades.
Hay dos tipos de sistemas de numeración a estudiar en este curso, los sistemas sumativos y los de valor posicional.

1.3 Sistemas de numeración sumativos o aditivos


Los sistemas sumativos definen un conjunto de símbolos con un valor fijo para cada uno de los símbolos y con operaciones básicas
de sumas (y/o restas) se procede a representar cantidades. Dos ejemplos típicos de estos sistemas de numeración son el egipcio y el
romano.
El sistema de numeración egipcio definía los siguientes símbolos

y para representar una cantidad por ejemplo 427 se utilizaban 4 símbolos que representan 100, 2 símbolos que representan 10 y 7
símbolos que representen 1. Por lo tanto el orden en que use estos símbolos no tiene importancia, simplemente es cuestión de
estética como se dibujen los símbolos que representan determinada cantidad.
El sistema de numeración romano, los números se expresan a través de determinadas letras, utilizándose sólo letras mayúsculas,
cada símbolo representa una cantidad en particular así: I=1 V=5 X=10 L=50 C=100 D=500 y M= 1000
Para cifras elevadas, los romanos utilizaban un guión encima de la letra correspondiente. El guión multiplicaba el valor de la letra
por 1.000. Por ejemplo, una "C" con guión superior correspondía al valor 100.000 (100 x 1.000), y una "M" con guión superior, al
valor 1.000.000 (1.000 x 1.000).
Este sistema de numeración es sumativo o aditivo, porque para representar un número se añaden tantos símbolos como sean
necesarios, de forma que la suma de ellos nos dé como resultado el número que queremos representar.
En el sistema de numeración romano las letras deben situarse en orden de más valor a menos valor. Algunas reglas para la escritura
de números romanos son:
Si una letra está a la derecha de otra de igual o mayor valor, le suma su valor a ésta: VI = 5 + 1 = 6.
Si una letra de menor valor está a la izquierda de otra mayor, le resta su valor a ésta: IX = 10 - 1 = 9.
Universidad de Pamplona 6
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Las letras I, X, C y M no se pueden repetir más de tres veces. Las letras V, L y D no pueden repetirse. Así, 40 se escribe XL y no
XXXX.
No todas las letras pueden restar: I sólo puede restar de V y de X;.... X sólo resta de L y C, .... y C sólo resta de D y M. Así, 49 se
escribe XLIX y no IL.
Si entre dos letras existe otra de menor valor, se combinará siempre con la segunda para restar su valor. Así, 19 se escribe XIX y
no IXX.
Si trazamos una raya horizontal sobre una o varias letras, éstas quedan multiplicadas por mil.

4-Representar las siguientes cantidades usando los sistemas de numeración sumativos definidos
Egipcio Romano
49
75
157
499
1249
2006
5999

1.4 Sistemas de numeración de valor posicional


Los sistemas de numeración de valor posicional definen un conjunto de símbolos a los cuales asigna un valor relativo a la posición
en la que se dibujen, por ello el símbolo 4 (en base 10) puede representar diferentes cantidades dependiendo en la posición que se
encuentre dentro de un número por ejemplo en 432 representa 400 objetos pero en 342 representa 40 objetos y en 324 el símbolo
(4) solo representa 4 objetos.

1.5 Sistema Binario para informática


Los circuitos digitales que componen las computadoras utilizan el sistema de numeración Binario para la interpretación de la
información
En este sistema se utilizan dos cifras (el 0 y el 1) en dónde cada una de ellas se denomina bit (contracción de binary digit).
Para medir la cantidad de información representada en binario se utilizan múltiplos que a diferencia de otras magnitudes físicas
utilizan el factor multiplicador 1024 en lugar de 1000, debido a que todo se representa en términos de potencias de 2 ( 210=1024 ).

Múltiplo Representa
Nibble Conjunto de 4 bits Ejemplo 1001
Byte Conjunto de 8 bits Ejemplo 10101010
KiloByte (KB) Conjunto de 1024 Bytes 1024 B
MegaByte (MB) Conjunto de 1024 KB 10242 B
GigaByte (GB) Conjunto de 1024 MB 10243 B
TeraByte (TB) Conjunto de 1024 GB 10244 B
El byte es la unidad básica de medida de la información representada mediante este sistema.

5-Convertir la capacidad descrita en la columna de la izquierda a las unidades indicada en la columna de la derecha (puede utilizar
como factor de conversión 1000 en lugar de 1024 para facilitar los cálculos)
Capacidad a convertir  Unidad destino
0,18 MByte B
0,004 TeraByte MB
1345672223 KiloByte GB
0,0002302 MB B

1.6 Operaciones con Números Binarios


Para transformar un número en base 10 a base 2 se realizan divisiones sucesivas por 2. Para obtener de un número decimal su
representación en el sistema binario, debemos dividir el primero por 2 siendo el residuo (resto) de cada una de las divisiones leído
de derecha a izquierda los que compondrán el número binario.
Ejemplo: Decimal a Binario. Ejemplo: Binario a Decimal.
Universidad de Pamplona 7
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

Para transformar un número representado como binario en decimal multiplicamos cada cifra del binario por 2 elevado a una
potencia que ira disminuyendo hasta llegar a cero. Para determinar la primera potencia contamos las cifras del binario (5 en este
caso) y disminuimos dicho número en 1 unidad.

Suma de Números Binarios


Es similar a la suma decimal excepto que se manejan sólo dos dígitos (0 y 1).
Las sumas básicas son:
0+0=0
0+1=1
1+0=1
1 + 1 = 10 (número 2 en binario)
Ejemplo: 100110101 + 11010101 =
Se comienza a sumar desde la izquierda, en el ejemplo, 1 + 1 = 10, entonces
escribimos 0 y "llevamos" 1. Se suma este 1 a la siguiente columna: 1 + 0 + 0 = 1, y
seguimos hasta terminar todas la columnas (exactamente como en decimal).

Resta de Números Binarios


Es semejante a la decimal excepto que se utilizan dos dígitos y teniendo en cuenta que
se realizan las restas parciales entre dos dígitos de idénticas posiciones, uno del
minuendo y otro del sustraendo, si el segundo excede al primero, se sustrae una
unidad del dígito de más a la izquierda en el minuendo (si existe y vale 1),
convirtiéndose este último en 0 y equivaliendo la unidad extraída a 1 * 2 en el
minuendo de resta parcial que estamos realizando. Si es 0 el dígito siguiente a la
izquierda, se busca en los sucesivos teniendo en cuenta que su valor se multiplica por
2 a cada desplazamiento a la derecha.
Las restas básicas son:
0-0=0
0 - 1 = No se puede realizar.
1-0=1
1-1=0

Ejemplo: 11001 – 1010 =

Producto de Números Binarios


Universidad de Pamplona 8
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
El producto de números binarios es semejante al decimal, ya que el 0 multiplicado por cualquier
otro da 0, y el 1 es el elemento neutro del producto.
Los productos básicos son:
0*0=0
0*1=0
1*0=0
1*1=1
Ejemplo: 10110 * 1001 =

Cociente de Números Binarios


La división se realiza en forma semejante al decimal, con la salvedad que
las multiplicaciones y restas internas del proceso de la división se realizan
en binario.
Ejemplo: 100010 / 110 =

6-. De acuerdo a los anteriores conceptos sobre sistemas de numeración de valor posicional completar la siguiente tabla

Base 2 Base 4 Base 8 Base 10 Base 16


10001011
2103
4621
145
1AB + B
10111 + 111
101 / 11
1011 * 110

7-Hacer las operaciones indicadas, dando el resultado en binario


47(10) / 12(4) =
43(5) * 13(6) =
10(16) - 13(4 =
10(8) + 13(4) =
(10(2) * 12(3) ) + 15(6) - 13(7) =

8- Ejercicios de selección múltiple


Un algoritmo debe ser: En binario 100011 dividido entre 101
a. Corto y Rápido. a. 111
b. Finito. b. 1011
c. Matemático c. 101
d. Complejo d. 100

El Diseño produce: El número 1100011100 en sistema hexadecimal


a. El programa ejecutable y las estructuras de los equivale a:
datos. a. 3A
b. Unidades de Tratamiento. b. 31C
c. Un programa informático. c. 13B
d. Un algoritmo descrito en pseudocódigo o diagrama d. 20C
Universidad de Pamplona 9
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
de flujo.
e.Nada Dentro de la metodologia estudiada, la fase de diseño
pretende:
((a div b)>5)and((b-a)>0)) a. Verifica que un algoritmo solucione el problema
a. No es una expresión válida b. Describir los pasos que sigue el computador c.
b. Es una expresión numérica (algoritmo) para que a partir de los datos de entrada dé
c. Es una expresión booleana solución al problema
d. Es una expresión alfanumérica d. Identificar los datos de entrada y de salida que
hacen parte de un problema
Si a= 3 b= --2 y c= 10 la expresión e. Traducir los algoritmos a un lenguaje de alto nivel
((a*b)>c) and ((c div 3)>b) da como resultado que entiende el computador
a. -2 f. Todas las anteriores
b. Falso g. Ninguna de las anteriores
c. –1
d. 1
e. Verdadero
f. Ninguna de las anteriores

1.7 Conceptos preliminares para la programación


Algoritmo: Conjunto de pasos lógicos, secuenciales y finitos para dar solución a un problema general.
Dato: Es una característica de un objeto o entidad, que adquiere un valor. Por ejemplo, si se piensa en los datos asociados a un
estudiante (la entidad es el estudiante), podemos identificar datos como su nombre, edad, sexo, estado civil, fecha de nacimiento, y
muchos otros más datos, que pueden relacionarse con el estudiante.
Constante: Un datos se dice que es constante si su valor nunca cambia dentro de un algoritmo.
Variable: Una variable es un dato cuyo valor cambia por lo menos una vez dentro de un algoritmo. Toda variable debe ser
identificada mediante un nombre único dentro de un algoritmo. Los nombres de las variables son palabras descriptivas del dato que
contienen, sin espacios ni signos de puntuación, usando solo letras del alfabeto ingles y números, comenzado siempre en letra.
Tipos de datos: Los datos se clasifican según el tipo de valor que contenga así: Numéricos (si su contenido es un número)
Alfanuméricos (si su contenido es un carácter o una cadena de caracteres) y Booleanos (si su contenido es un valor de verdad, es
decir un verdadero o un Falso).
Enteros Cortos
Enteros Enteros Propiamente dichos
Numéricos Enteros Largos

Reales

Tipos de datos
Caracteres
Alfanumérico
s Cadenas de Caracteres (String)

Boolenos

Expresión: Es una combinación apropiada de operandos, operadores, signos de agrupación y funciones. Los operandos son datos
constantes o variables, los signos de agrupación son los paréntesis y las funciones son las predefinidas por el lenguaje o construidas
por el programador.
Nota: en este curso sólo esta permitido el uso de los operadores aquí definidos.
Universidad de Pamplona 10
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

Suma +
Resta –
División real /
Aritméticos Multiplicación *
División entera div
Residuo de división entera mod

And X Y X and Y X or Y Not X


Lógicos Or V V V V F
not V F F V F
F V F V V
Operadores
F F F F V

Mayor >
Relacionales Menor <
Mayor o igual ≥
Menor o Igual ≤
Igual = =
Diferente ≠

El operador de concatenación que tiene algunos lenguajes de


Alfanuméricos programación y que básicamente sirve para pegar dos
cadenas de caracteres

Evaluar una expresión: Es el proceso mediante el cual se realizan las operaciones indicadas en una expresión, con los valores que
en ese instante tengan las variables, respentando el orden que plantean los signos de agrupación y obteniendo un único valor que
puede ser un número, un carácter o cadena de caracteres, o un valor de verdad (un falso o un verdadero)
Tipos de expresión: Una expresión puede ser numérica, alfanumérica o booleana. Es numérica si después de evaluar (calcular la
expresión) su resultado es un número; es alfanumérica si después de evaluar la expresión el resultado es un carácter o cadena de
carácter y es booleana si después de evaluar la expresión su resultado es un valor de verdad (un verdador o un falso)
Ejemplos: si a, b y c son datos numéricos
(a+b)*c es una expresión numérica
((a+b)*c) > 5 es una expresión boleana
((a>b) and (c>a+b)) or (c >3) es una expresión booleana
(a div 4) = 0 es una expresión booleana
(a mod 5) > ( b div 4) es una expresión boolena
((a mod 5) > 4)*c no es una expresión válida
((a mod 5) - 4)*c es una expresión numérica

9-. Realice una consulta bibliográfica para completar la siguiente tabla, sobre los tipos de datos en el lenguaje C.
Tipo de dato Espacio que ocupa en Rango de valores que se Ejemplo de un valor
memoria un dato de este tipo pueden almacenar en este tipo que puede contener este
(en Bytes) de datos tipo de datos
Entero corto sin signo 1 Byte De 0 a 255 125
Entero corto con signo
Entero propio con
signo
Entero propio sin signo
Universidad de Pamplona 11
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Entero largo
Real
Carácter 1 Byte Cualesquiera de los 255 ‘ ? ’
caracteres del código ascii

10-Complete la siguiente tabla, sabiendo que a,b,c,d son variables numéricas enteras cuyos valores en el instante que se desea
calcular las siguientes expresiones son: a=10, b=0 c=45 d=a
Expresión Valor generado al evaluar la expresión Tipo de expresión
(a*b) div 3
((a*b)>50 ) and ( 3> c )
((a-b)*5 ) mod d
(a +c ) < d

1.8 Estructuras de control

Lineales o secuenciales Entrada de datos


Salida de datos
Asignación

Estructuras de control No Lineales De selección o condicionales

Para
Repetitivas Mientras que
Hacer mientras
Universidad de Pamplona 12
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

2 Estructuras de control lineales o Secuenciales (Entrada, Asignación y Salida)


Estructuras de control
Nombre Diagrama de flujo Seudocódigo En C
Entrada o captura de datos
Leer b scanf ( “%d”, &b );
b

Salida o impresión de datos


Imprimir a printf (“cadena de formateo ”, a );
a

Asignación
a=b+c a=b+c;
a = b+c
En una asignación hay que tener en cuenta:
Variable cuyo valor
Símbolo de asignación
va a cambiar

En una asignación, el
a = b+c tipo de dato de la
En una asignación, variable de la izquierda
primero se calcula el debe ser igual al tipo de
valor de la expresión y expresión de la derecha
luego el resultado es
almacenado en la
variable de la izquierda Expresión que va a
ser calculada, y cuyo resultado
será almacenado en
la variable de la izquierda

Ejercicios recomendados para el estudio mínimo de las estructuras de control lineales

15, 16, 19, 21, 22, 26

Para cada uno de los siguientes ejercicios realizar el respectivo análisis, diseño y codificación:
B.A
11-Calcular el área de un triángulo conociendo su base y su altura. area =
2
1
12-Calcular la altura de un cono conociendo el volumen y el radio de su base. V = .π .r 2 .a
3
13-Dada la edad de tres personas calcular el promedio de edad.
p
r= y a = π .r
2
14-Calcular el área de un circulo conociendo su perímetro

9
15-Convertir una temperatura dada en grados Celsius a grados Fahrenheit, sabiendo que F = c + 32
5
16-Dado un número de 3 cifras invertir el número. Ej 791 es, 197.
Universidad de Pamplona 13
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
17-Tres personas deciden invertir su dinero para crear una empresa. Cada una de ellas invierte una cantidad distinta. Obtener el
porcentaje que cada quien invierte con respecto a la cantidad total invertida.

18-Calcular el área de un triángulo en función de las longitudes de sus lados Area = p( p − a )( p − b)( p − c)
donde p = (a + b + c ) / 2 (semiperimetro), utilice la función sqrt(x) que calcula la raíz cuadrada de x.

19-En una empresa que fabrica 3 tipos de productos (A, B, C) se cuenta con la colaboración de 3 empleados (E1, E2, E3) para la
elaboración de los mismos. Los tiempos que cada empleado demora en la elaboración de un artículo de cada tipo de producto se
dan en la siguiente tabla en minutos:
Tipo Producto A B C
Empleado
E1 12 13 7
E2 9 15 17
E3 15 8 6
Se desea saber, dada una determinada cantidad de artículos a fabricar de cada producto, cuanto tiempo laborará cada empleado en
total (estas cantidades puede ser diferente para cada producto).

20-Convertir metros a cm, km, pies y pulgadas.(1 metro son 100 cm, 1000 metros son un kilómetro, 1 metro son 39.37 pulgadas y
1 pie son 12 pulgadas)

21-Determinar el valor de una llamada telefónica, si por los primeros 3 minutos se cobran 300 minutos c/u y 150 por cada minuto
adicional. Suponer que las llamadas siempre duran más de 3 minutos.

22-Dados los coeficientes de una ecuación cuadrática ax + bx + c = 0 (los coeficientes son a, b y c ) determinar sus raíces,
2

− b ± b 2 − 4.a.c
sabiendo que X=
2.a
23-Dado un valor en pesos y conociendo la tasa de cambio del dólar, el bolívar y el euro con respecto al peso, determine a cuanto
equivale el valor dado en pesos, en cada una de estas otras monedas. (Tener en cuenta las siguientes tasas de cambio 1 dólar =2500
pesos, 1 euro =3000 pesos, un bolívar = 0.52 pesos)

24-Un alumno que desea saber cual será su calificación final en la materia de Programación I. Dicha calificación se compone de
los siguientes porcentajes
60 % Del promedio de sus tres calificaciones parciales.
25% Varios
15% Trabajos

25-Un vendedor recibe un sueldo base, más un 10% extra por comisión de sus ventas, el vendedor desea saber cuánto dinero
obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su
sueldo base y comisiones.

26-En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología. El presupuesto anual (o monto) del hospital se reparte
conforme a la siguiente tabla:
Área Porcentaje de presupuesto
Ginecología 40%
Pediatría 30%
Traumatología 30%
Calcular la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal.
Universidad de Pamplona 14
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

3 Estructuras de selección o Condicionales

Si condición entonces if ( condición ) {


no si ....Instrucciones para
Condición ....cuando la condición ....Instrucciones en c para
....sea verdadera ....cuando la condición
....sea verdadera
Sino } else {
....Instrucciones para
....cuando la condición ....Instrucciones en c para
....sea falsa ....cuando la condición
....sea falsa
Fin si };
En una estructura de selección hay que tener en cuenta:

Llegada a la
Expresión booleana estructura
Conjunto de instrucciones
que se evaluará para decidir que se ejecutarán, cuando
que conjunto de instrucciones la condición sea verdadera
se ejecutará

no si
Condición

Conjunto de instrucciones Terminación de la estructura


que se ejecutarán, cuando Aquí se deben encontrar los caminos
la condición sea Falsa del si y del no para continuar el algoritmo

Ejercicios mínimos recomendados para estudiar las estructuras de control de selección

29, 34, 43, 46, 56, 64, 71

27-Leer un número y escriba el valor absoluto del mismo, sin usar funciones predefinidas en el lenguaje.

28-Dado un número X determinar si es par o impar

29-Dados 3 números determinar el mayor (o el menor o el del medio en otros algoritmos)

30-Dados 3 números determinar cuantos números repetidos existen

31-Dado un número natural n de 3 cifras, no todas iguales, encuentre e imprima el número mayor y el menor que se puede formar
con las mismas cifras y los muestre en pantalla. Ej 174 Mayor 741 y el menor 147

32-Dados dos números A y B, si A>B, calcular e imprimir A-B; si A<B, calcular e imprimir A+B; si A=B, calcular e imprimir
A*B.
Universidad de Pamplona 15
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

33-Dados 5 números determine que números son mayores a la media.

34-Calcular el costo total de los pasajes aéreos para un viajero en la aerolínea VIENTOS AIR, para ello el viajero debe suministrar
los siguientes datos para registrar su reserva:
Número de Cédula.
Clase en la que desea viajar.
Destino.
Tipo de viaje.
Número de pasajes a adquirir.
Los costos de un (1) pasaje (en pesos) de acuerdo a la clase en que se viaja y a su destino son:
Destinos Miami Madrid
Clases
Primera 1300000 2700000
Segunda 1120000 2500000
Tercera 1100000 2320000
Se debe tener en cuenta que el tipo de viaje corresponde a la siguiente tabla:
1 De negocios
2 Familiar
3 Turístico individual
Cuando el viaje sea de negocios no se realizará descuento al pasaje, cuando sea familiar el descuento será del 7% para cada pasaje
individual, cuando sea turístico individual el descuento será del 4,75%. Además, dependiendo del número de pasajes a adquirir se
realizará un descuento adicional de acuerdo a la siguiente tabla:
Rango Descuento
3–5 2,6%
6 – 10 5,38%
11 y más 7,24%

35-El Seguro Social requiere clasificar a las personas que se jubilarán en el año de 2005. para este programa el seguro social
plantea las siguientes reglas:
Existen tres tipos de jubilaciones: por edad, por antigüedad joven y por antigüedad adulta. Las personas adscritas a la jubilación
por edad deben tener 60 años o más y una antigüedad en su empleo de menos de 25 años. Las personas adscritas a la jubilación por
antigüedad joven deben tener menos de 60 años y una antigüedad en su empleo de 25 años o más. Las personas adscritas a la
jubilación por antigüedad adulta deben tener 60 años o mas y una antigüedad en su empleo de 25 años o mas. Determinar en que
tipo de jubilación, quedara adscrita una persona conociendo su edad y tiempo de trabajo.
Solución
Análisis:
Entrada: e: edad del empleado a: antigüedad del empleado en la empresa
Salidas: Mensaje con el tipo de jubilación
Diseño
Seudocódigo Diagrama de Flujo
inicio
imprimir “digite la edad del empleado”
leer e
imprimir “digite la antigüedad del empleado”
leer a
si e >= 60 entonces
si a >=25 entonces
imprimir “jubilación por antigüedad adulta”
sino
imprimir “jubilación por edad”
finsi
sino
si a >= 25 entonces
Universidad de Pamplona 16
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
imprimir “jubilación por antigüedad joven” Inicio
sino
imprimir “no tiene jubilación”
e
finsi
fin si
fin a

no si
e60
no si no si
a25 a25

“No tiene “Jubilación “Jubilación “Jubilación


Jubilación ” antigüedad joven” por edad” antigüedad adulta”

Fin
Codificación
#include <stdio.h>
int main() {
int e,a;
printf("digite la edad del empleado \n");
scanf("%d", &e);
printf("digite la antigüedad del empleado \n");
scanf("%d",&a);
if (e >= 60) {
if (a >= 25){
printf("jubilación por antigüedad adulta \n");
} else {
printf("jubilación por edad \n");
};
} else {
if (a >= 25) {
printf("jubilación por antigüedad joven \n");
} else {
printf("no tiene jubilación \n");
};
};
return (0);
}

36-Calcular el número de pulsaciones que debe tener una persona por cada 10 segundos de ejercicio aeróbico; la formula que se
aplica cuando el sexo es femenino es:
num. pulsaciones = (220 - edad)/10
y si el sexo es masculino:
num. pulsaciones = (210 - edad)/10

37-Leer por teclado tres números cualquiera (A, B y C) que corresponden a las aristas de un triángulo; el programa debe
determinar que tipo de triangulo, teniendo en cuenta la siguiente clasificación:
Si los tres lados son iguales es equilátero
Si solo dos lados son iguales isósceles
Si todos son diferentes escalenos
Solución
Universidad de Pamplona 17
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Análisis:
Entrada: A,B,C: medidas de las tres aristas de un triángulo
Salidas: Mensaje con el tipo de triángulo
Diseño
Seudocódigo Diagrama de flujo
inicio inicio
imprimir “digite el valor de la arista1”
leer a
a, b, c
imprimir “digite el valor de la arista2”
leer b
imprimir “digite el valor de la arista3” no si
a=b
leer c
no si no si
si a = b entonces a=c b=c
si b = c entonces
imprimir “triángulo equilátero” no si “triángulo “triángulo “triángulo
sino b=c isósceles” isósceles” equilátero”
imprimir “triángulo isósceles” “triángulo
“triángulo
finsi escaleno ” isósceles”
sino
si a= c entonces
imprimir “triángulo isósceles”
sino
si b = c entonces fin
imprimir “triángulo isósceles”
sino
imprimir “triángulo escaleno”
finsi
finsi
fin si
fin
Codificación en C
Universidad de Pamplona 18
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main() {
int a,b,c;
printf("digite el valor de la arista1\n");
scanf("%d", &a);
printf("digite el valor de la arista2\n");
scanf("%d", &b);
printf("digite el valor de la arista3\n");
scanf("%d", &c);
if (a = = b) {
if (b = = c) {
printf("triángulo equilátero \n");
} else{
printf("triángulo isósceles \n");
};
} else {
if (a = = c) {
printf("triángulo isósceles \n");
} else {
if (b = = c) {
printf("triángulo isósceles \n");
} else {
printf("triángulo escaleno \n");
};
};
};
return (0);
} // aquí termina el main

38-Leer por teclado dos valores los cuales corresponden al lanzamiento de dos dados. Dependiendo de los valores imprimir:
Si los dos valores son iguales imprimir “Par”
Si los dos valores son desiguales imprimir “Lanzamiento”
Si la suma de los valores es menor a 6 imprimir “Juego Perdido”
Si algún valor es 1 o 2 imprimir “Puntaje Deficiente”
Si algún valor es 5 o 6 imprimir “Puntaje Alto”

39-Un jefe de hogar tiene unos ingresos I y unos gastos G, desea saber si sus ingresos del mes alcanzan para pagar todos sus gastos
y la cantidad que le sobra o falta.

40-Un empleado trabajar 40 horas semanales en una empresa y recibe un salario de 260.000 pesos semanales. Si excede de las 40
horas la empresa debe pagar un recargo del 30% por hora extra trabajada. Dadas las horas semanales trabajadas de un empleado,
determinar el salario a pagar.

41-Suponga que las tarifas de una compañía de gas se basan en el consumo de acuerdo con la siguiente información: los primeros
70 metros cúbicos de gas usado tiene un costo mínimo de 500 pesos, los siguientes 100 metros cúbicos de gas usado 50 pesos por
metro cúbico, los siguientes 230 metros cúbicos de gas usado 25 pesos por metro cúbico, por encima de 400 metros cúbicos de gas
usado 15 pesos por metro cúbico. Dada la lectura anterior y actual de gas en metros cúbicos, calcule el valor de la factura; teniendo
en cuenta que si la lectura actual es menor a la anterior hay una rebaja del 20% en las lecturas menores de 70 y mayores de 170
metros cúbicos; además si la lectura actual es igual al 50% de la lectura anterior se hará una rebaja del 50% a las lecturas mayores
de 170 y menores de 400 metros cúbicos.

42-Un cliente llega a una venta de empanadas y pide una cantidad X, sabiendo que cada empanada cuesta $ Y, cuanto debe pagar
el cliente por su pedido si:
Si el cliente compra mas de 300 empanadas, se le dará un descuento del 30%
Universidad de Pamplona 19
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Si compra más de 200 y menos de 300, se le dará un descuento del 20%
Si compra entre de 100 y 200, se le dará un descuento del 10%
Si compra mas de 50 y menos de 100, se le dará un descuento del 5%
Entre 1 y 50 no tiene descuento.

43-En un cajero automático se necesita determinar el menor número mínimo de billetes de 10.000, 5.000, 2.000, 1.000, y mínimo
de monedas de 500, 200 y 100 necesarios para pagar una cantidad X dada por teclado.

44-En una piñata se van a entregar regalos de la siguiente manera: a las niñas menores de 6 años se les va a dar un coche, entre 6 y
9 un peluche y a las demás una muñeca; a los niños menores de 5 se les va a dar un carrito entre 5 y 8 un disfraz de hombre araña y
a los demás una bicicleta, Dados el sexo y la edad del niño determinar que regalo le corresponde.

45-Dado el salario de un trabajador imprimir el salario a pagar sabiendo que el salario es mayor de un salario mínimo pero menor
que dos, cobrar el 15% de retención en la fuente, si es igual o superior a dos salarios mínimos, cobrar un 28% de retención, en
caso de ganar menos de un salario mínimo dar un subsidio del 30%.

46-Desplegar un menú con las opciones que le permita calcular el área de: Cuadrado, Círculo, Triángulo, Rectángulo. Para lograr
lo anterior debe aplicar las formulas matemáticas correspondientes para cada figura.

47-Tomando como base los resultados obtenidos en un laboratorio de análisis clínicos, realice un programa que le permita a un
medico determinar si una persona tiene anemia o no, lo cual depende de su nivel de hemoglobina en la sangre, de su edad y de su
sexo. Si el nivel de hemoglobina que tiene una persona es menor que el rango que le corresponde, se determina su resultado
como positivo y en caso contrario como negativo. La tabla en la que el medico se basa para obtener el resultado es la siguiente:

Edad Nivel hemoglobina


0 - 1 mes 13 - 26 g%
> 1 y < = 6 meses 10 - 18 g%
> 6 y < = 12 meses 11 - 15 g%
> 1 y < = 5 años 11.5 - 15 g%
> 5 y < = 10 años 12.6 - 15.5 g%
> 10 y < = 15 años 13 - 15.5 g%
mujeres > 15 años 12 - 16 g%
hombres > 15 años 14 - 18 g%

48-Una fábrica de computadoras planea ofrecer a los clientes un descuento que dependerá del número de computadoras que
compre. Si las computadoras son menos de cinco se les dará un 10% de descuento sobre el total de la compra; si el número de
computadoras es mayor o igual a cinco pero menos de diez se le otorga un 20% de descuento; y si son 10 o más se les da un 40%
de descuento. El precio de cada computadora es de $1500 dolares, desarrolle un programa que le permita a la empresa de
computadores saber el valor de la venta con y sin descuento.

49-Una empresa maneja códigos numéricos con las siguientes características:


Cada código consta de cuatro dígitos: El primero representa una provincia, El segundo el tipo de operación y Los dos últimos, el
número de la operación.
Escriba un programa que lea de teclado un número de cuatro dígitos, y posteriormente imprima en pantalla la siguiente
información: por ejemplo si el código es 5922
Provincia 5
Tipo de operación 9
Número de operación 22
En caso de que tenga mas de 4 dígitos en lugar del mensaje anterior, habrá que imprimir en pantalla el siguiente mensaje de error:
error código no valido. Si tiene menos de 4 dígitos se suponen 0 los primeros.
De acuerdo al valor de la provincia se debe especificar el área geográfica a que pertenece así:
Código Provincia Área Geográfica
De 1 al 3 Norte
Del 4 al 6 Sur
Del 7 al 9 Este
Universidad de Pamplona 20
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
0 Oeste

50-En una agencia de viajes se desea realizar un programa para determinar el valor a pagar por cierta cantidad de pasajes de ida
saliendo desde Cúcuta, de acuerdo con la siguiente tabla.
1. Bogotá 2. Cali
1 Clase 250.000 450.000
2 Clase 180.000 350.000
3 Clase 150.000 300.000
Determinar el valor a pagar de acuerdo a la clase, realizar un descuento del 10% si se compran más de 5 pasajes sin importar la
clase.

51-Calcular el total de dinero propio de una empresa a invertir en una compra, el total de dinero solicitado en préstamo al banco y
el total de dinero a pagar a la fábrica por concepto de crédito.
La empresa quiere hacer una compra de N piezas de la misma clase a una fábrica, a X pesos cada pieza. La empresa, dependiendo
del monto total de la compra, decidirá que hacer para pagar a la fabrica.
Si el monto total de la compra es mayor de $1 000 000 la empresa tendrá la capacidad de invertir de su propio dinero un 55% del
monto de la compra, pedir prestado al banco un 30% y el resto lo pagara solicitando un crédito al fabricante.
Si el monto total de la compra está entre $500 000(inclusive) y $1 000 000 la empresa tendrá capacidad de invertir de su propio
dinero un 60%, pedir prestado al banco un 15% y el restante 25% lo pagara solicitando crédito al fabricante.
Si el monto total de la compra es menor de $500 000 la empresa tendrá capacidad de invertir de su propio dinero un 70% y el
restante 30% lo pagara solicitando crédito al fabricante.
El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a crédito

52-Calcular el valor de la cuota mensual y el número de cuotas a pagar, por la realización de un préstamo en un banco con las
siguientes condiciones: Si el préstamo es menor de $500000 se paga un interés de 10% sobre el total del préstamo y las cuotas
mensuales quedan de un 3% del monto total. Si el préstamo está entre $500000 y $1000000(inclusive) se paga un interés del 7% y
las cuotas quedan de un 5% del monto total. Y si el préstamo es superior a $1000000 se paga un interés del 4% y las cuotas quedan
de un 7% del monto total.

53-Una empresa de servicios públicos desea liquidar el total de la factura teniendo en cuenta:
Estrato Nivel de Tarifa Básica
Consumo
1 <=10 $5000
2 <=25 $10000
3 <=35 $15000
4 <=40 $20000
Si el nivel de consumo se excede, debe pagar por cada punto adicional en el nivel de consumo $800, en cualquiera de los 4 estratos.
Ejemplo: Si se lee el estrato 3 y el nivel de consumo 45 entonces el valor de la factura es de 15000+(10*800)=23000 pesos

54- Dado un número X de 3 cifras determine la suma de las cifras pares y la suma de las cifras impares
Ejemplo: Si el número de tres cifras es 364, de los tres dígitos, los pares son 6 y 4.... Y en este caso el único impar es 3 por lo tanto
la Suma de pares es 10 y la Suma de Impares 3.

55-Calcular e imprimir el valor total a pagar por concepto matricula de un estudiante.


Para realizar estos, se debe capturar el código de estudiante, que permite definir los parámetros de liquidación e información
adicional (El código esta compuesto por 5 dígitos)
El primer dígito permite identificar el tipo de carrera que cursa el estudiante y valor base de matricula.
El segundo dígito representa la jornada y permite obtener recargo sobre la matricula.
Los siguientes dígitos (3) el consecutivo de la carrera.
Si el alumno tiene un consecutivo par tiene un descuento 20%.
Si el alumno tiene un consecutivo impar tiene un descuento 10%.
Las carreras están definidas así:
Código Tipo Valor base Matricula
1 Profesional $300.000
2 Tecnología $150.000
3 Técnico Profesional $100.000
Universidad de Pamplona 21
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
La jornada permite definir un recargo así:
Código Tipo Porc. Recargo
1 Diurna 5%
2 Nocturna 10%
El valor total de matricula (VTM) se calcula así:
V. T. M. = valor base de matricula + (valor base de matricula * Porc. recargo)
- (valor base de matricula * Porc. Desc)
Ejemplo: El alumno tiene el código 12345. La liquidación seria:
Valor base de Mat. 300.000 (tipo de carrera es “1” Profesional)
Recargo 30.000 (la jornada “2” es nocturna con recargo del 10%)
Descuento 30.000 (el consecutivo es impar “345” y tiene un Desc 10%)
V.T.M = 300.000

56-Un café internet cobra a sus usuarios de la siguiente forma.


Tiempo de navegación Valor a pagar
De 1 a 15 minutos 500
De 16 a 30 minutos 1000
De 31 a 60 minutos 1400
Superior a 60 minutos, 20 pesos el minuto adicional.
Dado el tiempo navegado por una persona (en minutos) determinar el valor a pagar.

57- Hacer un programa que asista el proceso de elecciones democráticas. Se desea saber para que votara una persona (Senado o
Cámara), para qué partido político y el número del candidato por el cual voto el pasado domingo, Si se da un número de 4 dígitos
(que representa el voto de la persona) con los cual se puede deducir:
El primer dígito nos indica el partido político
Número Partido
1 Liberal
2 Conservador
3 Partido de la U
4a9 Otros Partidos
El segundo dígito nos indica si el voto fue para Cámara o Senado. Si el dígito es par el voto fue para Cámara, en caso de que el
dígito sea impar el voto fue para Senado
Los dos últimos dígitos nos indican el número del candidato

58- La empresa “minutos” ofrece la venta de minutos de celular de acuerdo a las siguientes condiciones:
La tarifa se cobra por minutos y segundos aproximados de la siguiente forma: Si el número de segundos es mayor de 30 se cobra
un minuto completo, pero si es menor o igual a 30 no se cobran los segundos excedidos.
La tarifa por minuto esta dada por la siguiente tabla
Tiempo de conversación Valor a pagar
De 1 a 5 minutos 300 pesos por minuto
De 5 a 10 minutos 200 pesos por minuto
Más de 10 minutos 1500 pesos por los 10 primeros minutos más 100
pesos por minuto que se exceda de los 10 minutos
La empresa ofrece el 10% de descuento sobre el total a pagar, para las llamadas que cuesten más de 1600 pesos. Dado por teclado
el tiempo de conversación de una persona (en minutos y segundos) determinar el valor a pagar.

59-Los peajes en Colombia recaudan sus tarifas de acuerdo a la siguiente tabla


Categoría de peaje Categoría 1 Categoría 2
Tipo de vehículo
1. Motos 2000 2500
2. Carros 3800 4200
3. Camiones 10200 15500
Dado el tipo de vehículo y la categoría del peaje determinar el valor a pagar
Universidad de Pamplona 22
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
60-Un supermercado ofrece a sus clientes una promoción que consiste en lo siguiente:
Si el valor de las compras es superior a 50.000 pesos, solo se le cobrará el 5% de IVA sobre el valor de la compra y se les ofrecerá
escoger de una bolsa negra una de tres pelotas de colores, el cajero tecleará 1 si la bola seleccionada por el cliente es roja, 2 si es
amarilla o 3 si es verde. Si la bola es roja se le hará un descuento adicional del 10% sobre el valor de la compra, si es amarilla un
15% y si es verde un 20%.
Para las compras inferiores o iguales a 50.000 pesos no tendrá ningún descuento y se le cobrará el IVA del 16%.
Hacer el análisis y diseño de un algoritmo que liquide el total a pagar de un cliente

61-En una empresa de ventas de automóviles COLOMBIAUTOS LTDA, se tiene la siguiente tabla de precios sin importar la
marca:
Tipo De Auto Precio Comisión
1. Automóvil 45’000.000 5%
2. Camioneta 60’000.000 8%
3. Camión 100’000.000 10 %
Un empleado gana un salario básico mas comisiones de las ventas de dicho mes según el tipo de auto que venda. Si las ventas son
menores a 3 autos (sin importar el tipo), al salario básico se hace un descuento del 10 %. Para los empleados que vendan más de 3
autos se le da el salario básico más las comisiones respectivas de acuerdo a la tabla anterior.
A todos los empleados se les hace un descuento del 3% correspondiente SALUD y 5% correspondiente a PENSIONES sobre el
SALARIO TOTAL= (SALARIO BASICO +COMISIONES).
Hacer un programa que calcule el salario a pagar a un empleado de acuerdo a las condiciones anteriores.

62-Hacer un programa para determinar el precio de un Libro, conociendo el área y el tipo del libro
Tipo 1(Nacionales) Tipo 2(Importados)
Área de Ingeniarías 78.000 132.000
Área de Administración 69.000 125.000
Área de Salud 143.000 235.000
Otras Áreas 55.600 86.000
Por ser el mes del ingeniero se realizara un descuento del 10% para las ventas en esta área.

63-Se requiere calcular el valor neto a pagar a un trabajador (Contratistas y de Planta) en un mes, sabiendo que cada trabajador
tiene un sueldo básico y teniendo en cuenta lo siguiente:
A todo trabajador de planta, se le debe descontar el 4% del sueldo básico por concepto de salud y el 3.8% del sueldo básico por
concepto de pensión.
Si el trabajador es de Planta y su sueldo básico es de menos de $ 437.000 se le debe cancelar $ 40.000 adicional por concepto de
auxilio de transporte.
Si el trabajador es de Planta y devenga más de $ 1.750.000 de salario básico, se le descontará el 1% del sueldo básico por concepto
de Solidaridad Pensional.
Si el trabajador es Contratista, se le debe descontar el 10% por concepto de retención en la fuente solamente si su salario es
superior a $ 1.500.000.

64-En la ciudad de Pamplona se va a realizar un concierto por el día de amor y amistad todas las boletas están identificadas con un
número de 6 cifras, que esta compuesto de la siguiente forma:
Si la suma del primer y el último dígito es mayor que el dígito cinco la boleta es valida, en caso contrario no es valida.
El segundo Dígito determina el tipo de Boleta según la siguiente tabla
Tipo de Entrada
De 1 a 5 Gramilla
De 6 a 9 incluyendo 0 General
El número que forma el tercer y cuarto dígito determina la hora y la puerta de entrada al evento según la siguiente tabla

Si es par Puerta 1 a partir de las 7 pm


Si es impar Puerta 2 a partir de las 8 pm
Analice y diseñe un algoritmo donde se ingrese el número de una boleta y posteriormente determine: Si la boleta es valida, el tipo
de boleta y la puerta y horario al cual debe ingresar el espectador.
Ejemplo
Numero de Boleta 4 3 7 9 5 2
Universidad de Pamplona 23
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

La suma del primer y último dígito 4+2 = 6 6 es mayor que 5 la boleta es valida
El Segundo dígito es 3 Tipo de Boleta Vip
El tercer y cuarto dígito forman el 79 que es impar La persona entra por la Puerta 2 a partir de las 8 pm

65-Los profesores de psicología de la Universidad requieren que les desarrollen un algoritmo para determinar el grado de estrés
que tienen los estudiantes durante la semana de exámenes y para ello se basan en las siguientes reglas:
El nivel de estrés se mide en puntos de estrés que se calculan de la siguiente forma: si al estudiante que se le está midiendo su
grado de estrés es hombre entre 15 y 25 años entonces su grado estrés está determinado por el semestre en que está matriculado
dividido entre el número de horas que le dedicó a estudiar y si es mayor de 25 años su nivel de estrés depende de las materias que
tiene matriculadas multiplicadas por el semestre que cursa, dividido entre 100. Para las mujeres se calcula asi: Si está cursando
entre primer y quinto semestre los puntos de estrés se miden por la edad dividido entre 10. Y si está cursando entre sexto y
décimo semestre, el estrés se mide como el numero de materias que está cursando dividido entre el 30% de las horas dedicadas a
estudiar.
Hacer el algoritmo que le permita a los profesores de psicología calcular el nivel de estrés de cualquier estudiante, durante la
semana de exámenes.

66-El gobierno del estado de México desea reforestar un bosque que mide determinado número de metros cuadrados. Si la
superficie del terreno excede a 1 millón de metros cuadrados, entonces decidirá sembrar de la siguiente manera:
Porcentaje de la superficie del bosque Tipo de árbol
70% pino
20% oyamel
10% cedro
Si la superficie del terreno es menor o igual a un millón de metros cuadrados, entonces decidirá sembrar de la siguiente manera:
Porcentaje de la superficie del bosque Tipo de árbol
50% pino
30% oyamel
20% cedro
El gobierno desea saber el numero de pinos, oyameles y cedros que tendrá que sembrar en el bosque, si se sabe que en 10 metros
cuadrados caben 8 pinos, en 15 metros cuadrados caben 15 oyameles y en 18 metros cuadrados caben 10 cedros.

67-Dado un número de tres cifras, descomponerlo en sus dígitos. Construir con dichos dígitos dos números de dos cifras de tal
manera que uno de esos números de dos cifras sea el más grande posible y el otro el más pequeño posible. Ejemplo si el número de
tres cifras es 491 sus dígitos son 4 9 y 1 el más grande numero de dos dígitos que se puede construir con estos dígitos es 94
y el más pequeño de dos cifras es 19

68-En central de abastos de Pamplona (bodegas donde se almacena al por mayor) se ha establecido un mecanismo para el ingreso
de vehículos que permite el cobro de parqueadero según las siguientes condiciones: Al centro de abastos entran vehículos con dos
propósitos, algunos entran a descargar productos y otros entran a cargar (estos son los dos tipos de servicio que presta el centro de
abastos 1. Cargue y 2.descargue).
A los vehículos que entran a descargar se les cobra de acuerdo a la siguiente tabla
Peso transportado Menos de 10 toneladas 10 o más toneladas
Tipo de producto
1. Perecedero 10000 pesos por tonelada 7000 pesos por tonelada
2. No perecedero 50000 pesos por todo el producto 50000 por las primeras 10 toneladas y a 5000
transportado pesos cada tonelada que exceda de 10
A los vehículos que entran a cargar se les cobra por el tiempo que permanecen dentro del centro de abastos así: Las primeras dos
horas son gratis para todos los vehículos que entran a cargar. Las horas extras que permanecen dentro del parqueadero se cobran a
2000 pesos la hora (siempre se cobra la hora completa) y tendrá un incremento del 25% si el camión mide más de 4 metros de
largo.
Hacer el análisis y diseño de un algoritmo que ayude al portero del centro de abastos para calcular el costo de parqueadero de uno
de los camiones que hace uso de estos servicios.
Universidad de Pamplona 24
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
69-Dado un número de cuatro cifras, descomponerlo en dos números de dos cifras. Si el primer número de dos cifras es mayor que
el segundo, sumar los dígitos que sean pares del primer número, en caso contrario sumar los dígitos que sean impares del segundo
número.
Ejemplo: si el número de 4 cifras es 3521 al descomponerlo en dos números de dos cifras será 35 y 21, como el primero de estos
dos números es mayor que el segundo se sumarían los dígitos que son pares de 35. Como ninguno de los dígitos es par 3 y 5,
entonces la suma será 0 (cero)
Ejemplo 2: si el número de 4 cifras es 1521 al descomponerlo en dos números de dos cifras será 15 y 21, como el primero de estos
dos números no es mayor que el segundo se sumarían los dígitos que son impares del segundo número 21. Como los dígitos del
segundo son 2 y 1 y el único impar es 1, entonces la suma será 1 (uno)

70-Realice el análisis y diseño de un algoritmo que permita calcular el precio de la boletería para ingresar a un concierto de inicio
de semestre a la universidad. Se ingresa un número de seis dígitos. El primer dígito representa la ubicación y el valor neto a pagar
así:
Primer Dígito Ubicación Valor inicial
1 Palcos 120000
2y3 Vip 80000
4a6 Platino 50000
7 a 9 incluido el 0 General 30000
Los siguientes tres dígitos representan el número de la silla. Si el número es par se hará un descuento del 5% y si es impar un
descuento del 10%.
Los dos últimos dígitos representan un recargo que será consumible así:
Dos últimos dígitos Recargo consumible
1 a 20 15000
Mayor a 20 hasta 50 10000
De 51 en adelante 5000
Al final deberá determinar cuánto debe cancelar por su boleta mostrando su ubicación, y cuanto puede consumir

71-Hacer el análisis y diseño de un algoritmo que calcule el total que hay que pagar a un empleado de una empresa sabiendo que la
empresa exige a sus trabajadores laborar 40 horas semanales.
Para liquidar el salario semanal a pagar se tiene en cuenta las siguientes condiciones:
El salario base para las mujeres de de 500.000 pesos semanales y para los hombres es de 700.000 pesos semanales.
Si el empleado es mujer es necesario hacer una bonificación de 20.000 pesos por cada hijo que tenga.
Si el empleado es hombre la bonificación depende solo de la edad así: entre 18 y 30 años 10% del salario base, entre 30 y 40 años
20% y más de 40 años tendrá una bonificación del 25 % del salario base
A todos los empleados (sin importar si son hombres o mujeres) se les descuenta 5000 pesos por cada hora que deje de laborar de
las 40 horas que se exigen
A todos los empleados que hayan trabajado más de 30 horas a la semana se les hace un descuento del 10% de su salario semanal
(incluida las bonificaciones) por concepto de pensión.

4 Estructuras repetitivas
Estructura repetitiva
Para
Para i=1 hasta n inc 1 haga for ( i =1 ; i<=n ; i=i+1 ){
i=1; n ; 1
..... Instrucciones a repetir ..... Instrucciones a repetir

fin para };

Estructura repetitiva
Mientras que
MQ condición haga while ( condición ) {
Universidad de Pamplona 25
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

..... Instrucciones a repetir ..... Instrucciones a repetir


no
Condición
fin MQ };
si

Estructura repetitiva
Hacer Mientras
Hacer Do {

..... Instrucciones a repetir ..... Instrucciones a repetir

MQ condición } while ( condición );


si
Condición

no

En una estructura repetitiva para hay que tener en cuenta:


Variable que cuenta las Valor inicial del contador
vueltas que va dando el ciclo

Valor final, hasta el cual


Llegada por primera vez
el contador debe llegar
al ciclo repetitivo

Valor que se utiliza para


i = 1; n ; 1 incrementar el contador
cada vez que se ejecuta
el conjunto de instrucciones

Continua el proceso de repetición


si el contador no ha superado
el límite especificado

Terminación del proceso


de repetición del conjunto de
instrucciones
Conjunto de instrucciones que
se repetirán
Universidad de Pamplona 26
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
En una estructura repetitiva Mientras Que (MQ), hay que tener en cuenta:

Expresión booleana Llegada por primera vez


que se evaluará y determina al ciclo repetitivo
si se sigue o no repitiendo
las instrucciones

no
Condición
si
Regreso para evaluar
la expresión booleana
que permite decidir si se
continua o no la repetición del
conjunto de instrucciones

Terminación del proceso


de repetición del conjunto de
Conjunto de instrucciones que instrucciones
se repetirán

En una Estructura repetitiva Hacer Mientras, hay que tener en cuenta:

Llegada por primera vez


Regreso para repetir al ciclo repetitivo
nuevamente el
conjunto de instrucciones

Expresión booleana
que se evaluará y determina
si se sigue o no repitiendo
las instrucciones

si
Conjunto de instrucciones que
Condición
se repetirán
no
Terminación del proceso
de repetición del conjunto de
instrucciones

Ejercicios recomendados para el estudio mínimo de estructuras de control repetitivas

74, 76, 77, 80, 82, 83, 86, 90, 101, 104, 107, 116, 125, 136, 142, 143

72-Sea F una función de los reales en los reales, definida por


x si x < −5

f ( x) =  x + 3 si − 5 ≤ x ≤ 5
 x 2 − 2 si x > 5

Haga un programa que lea n valores para “x” y calcule f(x) para cada uno de ellos.
Universidad de Pamplona 27
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
73-Escriba un programa que lea las notas de un curso y escriba el promedio
Resuelva el problema para un curso de exactamente 50 alumnos.
Resuelva el problema general para cualquier curso; donde el profesor indique el número de alumnos que tiene en su grupo.
Resuelva el problema más general para el caso en que el profesor no sabe cuántos alumnos tiene y en el cual cada alumno tenga un
número no determinado de notas con las cuales se obtiene la definitiva. Utilice como convención para determinar el número de
notas del alumno un número que no este en el rango de notas válidas y para determinar el número de alumnos utilice el código
cero.

74-Dados dos (2) números ·”x” y “z”, calcular “x”elevado a la ”z”

75-Dados dos (2) números ·”x” y “z”donde “x” es menor que “z” haga un algoritmo para calcular el producto y la suma de los
números comprendidos entre ”x” y “z”.

76-Dado un (1) número ” x ”, calcular “ x ! ” (x factorial). El factorial de un número natural es el producto de los naturales
menores o iguales que el número dado. Ejemplo: 5! = 1x2x3x4x5 = 120

77-Calcular X div Y (división entera de X entre Y) y X mod Y (residuo de la división entera), usando restas sucesivas (sin usar los
operadores div y mod). Ejemplo si X=17 y Y=5 entonces el proceso de restas sucesivas es:
17 – 5 = 12 Por lo tanto X div Y es 3 porque se realizaron 3 restas
12 – 5 = 7 X mod Y es 2 porque la última resta da 2
7– 5 = 2

78-Dado un número calcular e imprimir si es primo


Solución
Análisis
Entradas: n: un entero positivo del cual se desea saber si es o no primo
Salidas: Un mensaje que diga si el número dado es primo o no
Diseño en seudocódigo Codificación en lenguaje C
inicio #include<stdio.h>
leer( n ) int main(){
e=0 long int n,e=0, i;
para i =1 hasta n hacer printf("digite un número");
si ( (n mod i ) == 0) scanf("%ld", &n);
e = e+1 for( i =1; i <=n; i = i+1){
finsi if ( (n % i ) ==0 ){
finpara e=e+1;
si (e <= 2) entonces };
imprimir( “el número es primo”) };
sino if ( e <=2 ){
imprimir( “el número no es primo”) printf("El número %ld es primo", n);
finsi }else{
fin printf("El número %ld No es primo", n);
};
system("pause");
return (0);
}

79-Hacer un programa que imprima los n primeros números primos. (n dado por teclado)

80-Se dice que un número N es número perfecto si la suma de sus divisores propios es igual a él mismo.
El conjunto de divisores propios de un número N, está formado por todos sus divisores, Excepto él mismo. Ejs, los divisores
propios de 9 son 1 y 3. Los divisores propios de 6 son 1,2 y 3.
Por lo tanto 6 es un número perfecto porque la suma de sus divisores propios 1 + 2 +3 es igual a él mismo (a 6). Y 9 no es
perfecto.
Universidad de Pamplona 28
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Hacer un algoritmo que lea un número y diga si es perfecto o no.
Hacer un algoritmo que halle todos los números perfectos menores que un número dado.

81-El número de combinaciones de m elementos tomados de n en n está determinado por


m m!
  = Haga un algoritmo que lea dos números m y n, calcule la combinatoria m,n.
 n  n !( m − n) !
Recordar que n y m son positivos y que si n es mayor que m la combinatoria es cero.

82-Las series de Taylor se definen por medio de sumatorias.


Para el cálculo del seno de x (x dado en radianes) (realmente las sumatorias son hasta infinito, pero para efectos de programación
se han acotado lo suficiente para que se puedan realizar los cálculos y que el resultado sea aproximado al verdadero valor)...
x3 x5 x7 x 2 k +1
S en o ( X ) = x − + − + . ..+ ( − 1) k
+ . ... . utilizando notación de sumatoria sería:
3! 5! 7! ( 2 k + 1) !
15
x 2 k +1
Seno (x) = ∑
k = 0
( − 1) k
( 2 k + 1 )!
x2 x4 x6 x 2k
Para el coseno Cos ( x) = 1 − + − + ... + (−1) k + ..... Utilizando notación de sumatoria sería:
2! 4! 6! 2 k!
15
x 2k
C os( x ) = ∑
k = 0
( − 1) k
(2 k )!

x2 x3 x4 xi
Para el exponencial e = 1 + x +
x
+ + +.... Utilizando notación de sumatoria e = ∑
x
2! 3! 4 ! i =1 i !
Hacer un algoritmo que lea un X y calcule Seno(x), Cos(x) y ex, utilizando las series de Taylor descritas anteriormente.

83-Hacer un programa que lea un número N y halle el promedio de sus divisores.


Ej: Dado el Número 6, sus divisores son 1,2,3 y 6; por lo tanto el promedio de los divisores de 6 es igual a 3

84-Simular un reloj digital con dos números para la hora, dos para los minutos y dos para los segundos (hh:mm:ss) ejemplo:
05:23:09

85-Hacer el análisis, diseño y codificación de un algoritmo que dado un X y un N calcule la siguiente sumatoria
N
( x − 1) 2 k
∑k =1
( − 1) k

( k − 1) !
86-Imprimir los términos de la serie de Fibonacci que sean menores a 10 000. Los dos primeros términos de esta serie son 1 y cada
nuevo término se va obteniendo sumando los dos anteriores. La serie quedaría 1, 1, 2, 3, 5, 8, 13, 21, ... etc. (Consultar la historia
de esta serie)

87-Calcular los n primeros términos de la serie de Fibonacci y determinar la suma de los términos pares y los términos impares.
Para n = 7
La serie de Fibonacci es: 1, 1, 2, 3, 5, 8,13
La suma de los términos pares es 2+8 = 10
La suma de los términos impares es 1+1+3+5+13 = 23

88- Hacer un programa que calcule los N primeros términos de la serie: 1, 4, 2, 8, 4, 16, 8, ...... Determinada por:
a1=1
a2= 22 / a1 = 4
a3= 23 / a2 = 2
a4 = 24 / a3 = 8
.....
Universidad de Pamplona 29
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
ak= 2k / ak-1

89-Escriba un algoritmo que dado un número entero n, determine si n es un número factorial (es decir si existe un k tal que n=k!)

Solución
Análisis Entradas: n: un entero positivo
Salidas: Decir si n es factorial de algún número
Diseño
Seudocódigo Diagrama de flujo
inicio inicio
lea n
c=1
f=1 n
mq ( f<n )
c = c+ 1 f =1
f=f*c c =1
finmq
si ( f = = n )
imprimir (“n es el factorial de ”, c) no
f<n
sino
imprimir (“n no es el factorial de ningún número”) si
finsi c= c +1
fin f=f*c

no si
f==n

“n es el factorial de c” “n no es factorial”

fin

Codificación en C
Universidad de Pamplona 30
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
int main() {
int n,c,f;
printf (“ingrese un número”);
scanf(“%d”, &n);
c=1; f =1;
while( f < n ){
c = c+ 1;
f = f * c;
};
if ( f = = n) {
printf (“ %d es el factorial de %d ”, n, c);
} else {
printf (“ %d no es factorial de ningún número ”, n);
};
system(“pause”);
return(0);
}

90-Manolito tiene una cuenta de ahorros en la corporación SINFONDOS. Esta corporación otorga a sus ahorradores un interés
mensual y un interés anual sobre el saldo del momento. Determinar a partir del saldo de la cuenta, del interés mensual y del interés
anual, los ahorros que tendrá Manolito después de un número determinado de meses (dado por teclado), si él no retira ni deposita
dinero en ese tiempo.

91-La primitiva población de OSCANDIA se rige por un modelo macroeconómico particular de oferta y Demanda para su
producto básico: el OSCAO. En este modelo el precio del producto, su oferta y su demanda en un periodo i-esimo, están dados en
función de los datos de ese periodo y del periodo anterior por las siguientes fórmulas:
sea:
Pi = Precio en el periodo i-esimo
Oi = Oferta en el periodo i-esimo
di = Demanda en el periodo i-esimo
d i −1
Pi = Pi −1 *
Oi −1
Pi −1
Oi = * (0.9 * Oi −1 + 01
. * d i −1 )
Pi
P
d i = d i −1 * i −1 + Ratacrec
Pi
Donde Ratacrec es un valor constante igual a 100.
Haga un algoritmo que reciba el precio, la oferta y la demanda del OSCAO en un periodo inicial (i=0) y calcule y presente el
precio, la oferta y la demanda en cada uno de los 24 periodos siguientes.
Se debe indicar en cada periodo si la oferta supera la demanda, si la demanda a la oferta o si están en equilibrio

92- (*) El método de Newton-Raphson para calcular una raíz cuadrada de un número X, parte de un número inicial r a partir del
cual se van calculando aproximaciones cada vez mas exactas a la solución. Para calcular la aproximación (i+1)-esima se usa la
anterior (la i-esima) y se aplica la formula:
x
ri +
ri
ri +1 =
2
Universidad de Pamplona 31
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
93-Determinar el valor del salario de cada uno de los empleados de una empresa conociéndose su código, el valor actual del
salario, el porcentaje de inflación del año anterior. El incremento corresponde exactamente al porcentaje de la inflación, para cada
empleado se debe mostrar el código, el salario para el nuevo año así como el valor incrementado. El programa termina cuando se
ingresa para el código del empleado el valor cero (0).

94-Determinar la cantidad de metros requerida para confeccionar un traje a cada uno de los clientes de una sastrería. La cantidad de
metros requerida corresponde a las 8 quintas partes de la altura del cliente. El programa termina cuando para un cliente se teclea
una altura de 0,0 metros, al final se debe mostrar el número total de clientes atendidos.

95-Hallar el valor total a pagar por una cantidad de pasajes a Medellín vendidos a cada turista, sabiendo que el valor de un solo
pasaje es de $65 000. Un turista puede viajar solo o en grupo, cuando viaja en grupo los pasajes se venden solo al representante del
grupo. Se debe tener en cuenta que el valor total de los pasajes tendrá un descuento de 5% si son más de 6 los pasajes adquiridos,
en caso contrario no habrá descuento. El programa termina cuando se solicitan cero (0) pasajes, al final se debe mostrar el número
total de pasajes vendidos y el número de turistas atendidos.

96-Calcular el valor total de una factura conociéndose el código, el costo unitario y la cantidad de cada una de los artículos a
facturar. Al subtotal obtenido se le debe realizar un descuento del 5,32% cuando sobrepase los $500 000 en caso contrario el
descuento será solo de 2,75%. Se debe mostrar al final el número de artículos facturados, el subtotal de la factura, el valor del
descuento y valor final de la factura, el programa debe mostrar estos datos cuando el la cantidad de un artículo facturado sea cero
(0).

97-Hallar el total de números que son múltiplos de 3 de una cantidad no determinada de números ingresados por teclado. El
programa termina cuando se ingresa el número cero (0). Se debe mostrar también el total de números analizados.

98-Determinar el total de números que no son múltiplos de 2, ni de 3, ni de 5 de una cantidad no determinada de números
ingresados por teclado. El programa termina cuando se ingresa el número cero (0). Se debe mostrar también el total de números
analizados, el total de números que no son múltiplos solo de 2, el total de números que no son múltiplos solo de 3 y el total de
números que no son múltiplos solo de 5.

99-Encontrar el número de años en los que una cantidad invertida se cuadruplicará, usando interés compuesto. Se conoce además
de la cantidad invertida, el porcentaje anual de intereses. La fórmula para el interés compuesto es S=P*(1 + i)n.

100-Hallar el número de años en los que una cantidad invertida se cuadruplicará, usando interés simple. Se conoce además de la
cantidad invertida, el porcentaje anual de intereses. La fórmula para el interés simple es S = P*(1 + i*n).

101-Hallar la cantidad de rebotes después de la cual un balón alcanza una altura máxima menor a la décima parte de la altura desde
la cual fue soltado en caída libre. Por propiedades del balón, este luego de ser soltado desde una altura H alcanza en cada rebote el
10% menos de la altura que en el rebote anterior.

102-Se leen 2 números A y B determine cual es el múltiplo de A más cercano a B.

103-Hallar el año en el que la población de la ciudad de Pamplona iguale o supere a la población de la ciudad de Bogotá. Para ello
se sabe que la rata de crecimiento de la población de Pamplona es del 2,35% anual y la de la población de Bogotá es del 1,06%
anual, además se supone que dicha rata de crecimiento permanecerá constante. Se conocen, también, las poblaciones actuales tanto
de Pamplona como de Bogotá.

104-Determinar la cantidad de cifras que tiene un número entero. Ej: para el número 35689 el programa debe imprimir “El número
35689 tiene 5 cifras”.

105-En el vivero n personas hacen compras. A cada persona le hacen un descuento sobre la factura dependiendo del total de ella
así:
si valor total de la factura es mayor a 100.000 y menor o igual a 400.000 el descuento es del 10%
si valor total de la factura es mayor a 400.000 y menor o igual a 600.000 el descuento es del 5%
si valor total de la factura es mayor a 600.000 y menor o igual a 800.000 el descuento es del 20%
si valor total de la factura es mayor a 800.000 el descuento es del 25%
Hacer un programa que calcule e imprima el valor total de la factura de cada persona, el total de las compras de todas las personas
y el promedio de compras.
Universidad de Pamplona 32
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

106-Un niño va a la tienda con los p pesos que le dio su papá de domingo para comprar dulces. Son tres los tipos de dulces que le
interesan, sus precios son: $0.75, $1.15 y $0.65. El niño le va pidiendo al tendero qué tipo de dulces quiere (1, 2 o 3) y cuántos
quiere, entonces el tendero, si aún le alcanza para comprar más dulces, le pregunta cuál y cuántos quiere y así hasta que el niño no
pueda comprar más dulces. Escriba un programa que, cuando el niño no pueda comprar más dulces, imprima cuántos dulces
compró de cada tipo y cuál es su cambio.
Nota: El niño no necesariamente pide en orden el tipo de los dulces, puede pedir varias veces el mismo tipo de dulce y el tendero le
seguirá preguntando tipo y cantidad hasta que ya no pueda comprar al menos un dulce del más barato.

107-Dado un número natural n encuentre su raíz digital.


Raíz digital de un natural: se calcula el natural m sumando los dígitos que componen a n. El proceso se repite sobre el nuevo
número hasta que el resultado sea de un dígito.
Ejemplo: 347 → 3 + 4 + 7 = 14 → 1 + 4 = 5 → RD(347) = 5

108-Dado un número natural n (de cualquier cantidad de dígitos) encuentre otro entero m que sea n al revés, invirtiendo el orden
de los dígitos y diga si n es un palíndromo. Si n es un palíndromo, entonces se lee igual de izquierda a derecha que de derecha a
izquierda. Ejemplos: para n=345 el n al revés es 543 y no es palíndromo. Para n=75357 el n al revés es 75357 y por lo tanto si es
palindromo.

109-Escribir un programa, que recoge del teclado las cédulas y años trabajados en la empresa de una serie de empleados hasta que
se introduce una cédula que sea 0. El programa debe imprimir las cédulas de los empleados y la gratificación correspondiente anual
con base al valor calculado teniendo en cuenta lo siguiente:
Años trabajados Gratificación en pesos
Menos de 10 No corresponde gratificación
Entre 10 y 20 80.000
Entre 20 y 30 100.000
Más de 30 150.000
Se desea calcular e imprimir:
La cédula y la gratificación de cada empleado
El promedio de las gratificaciones a pagar por parte de la empresa a todos los empleados.

110-Una compañía que vende gaseosas realizó una encuesta a 100 personas. En dicha encuesta se pregunta lo siguiente:
Si el encuestado toma o no gaseosa.
Si toma, de qué marca prefiere la gaseosa.( 1=PepsiCola, 2=CocaCola 3=Otra marca)
Si toma, cuántas gaseosas toma en un día.
Se le pide que realice un programa que conteste lo siguiente:
¿Cuántos personas que no toman gaseosa fueron encuestados?
¿Cuántas personas:
toman Marca 1
toman Marca 2
¿Calcular el promedio por día de gaseosas de las personas que la consumen?

111- El cine vista fea tiene 3 salas de cine, donde se presentan 3 películas, existe una fila de un número indeterminado de personas
para entrar al cine, máximo pueden entrar 150 personas a las tres salas del cine, cada persona que quiere entrar al cine da su edad y
la sala a la que quiere ingresar. Los adultos pagan 10.000 pesos y los niños pagan 7.000 pesos (se considera niño a la persona
menor de 12 años). Realizar un programa en C para calcular el valor total recaudado por las 3 salas.
Nota: La venta de la taquilla termina cuando la edad es igual a 0 o se completen las 150 personas.

112-(**) Una propiedad de los números impares, nos permite encontrar los cubos de los números naturales así:
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29....
13=1 23=3+5 33=7+9+11 43=13+15+17+19 53=21+23+25+27+29
Es decir que para calcular n3, se necesitan n números impares consecutivos de acuerdo a la representación anterior.
Hacer un programa en C que imprima los n términos impares que son necesarios para calcular n3 de acuerdo a la propiedad
expuesta anteriormente. (n es un número entero positivo dado por teclado)
Universidad de Pamplona 33
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
113-Codifique un programa en C que lea por teclado cierta cantidad de números hasta teclear 0 (cero). El programa debe validar
que cada uno de estos valores tecleados estén entre un intervalo [a,b] (a y b son dos números leído por teclado). El programada
debe imprimir la suma de aquellos valores que sean múltiplos de un valor z también leído por teclado.

Por ejemplo para a=8, b=96 (intervalo [8,96] ) y z=4, se deben leer ciertos valores hasta encontrar un cero como por ejemplo 9,
13, 93, 16, 19, 27, 33, 36, 41, 59, 11, 24, 0. La suma de los múltiplos de z (z=4 en este caso) es 76
b
k +k
3 k

114-Calcular la siguiente sumatoria



k =a k − 5 , para los valores de a y b dados por teclado (validando que a sea mayor que
k ≠5
b), y teniendo en cuenta que k no puede ser 5 pues generaria una división por cero.
8
k 3 + k k 43 + 44 63 + 66 7 3 + 7 7 83 + 88
Ejemplo si a= 4 y b=8 entonces ∑
k =4 k − 5
=
4−5
+
6−5
+
7−5
+
8−5
k ≠5
115-Suponga que el Gobierno Nacional y la comunidad internacional se dan cuenta, por fin, de que el río Magdalena necesita
medidas urgentes para su recuperación, ya que se está muriendo por los vertidos incontrolados de fábricas y de actividades
turísticas, además de la pesca incontrolada, pesca de inmaduros (pequeñines) y el empleo de las peligrosas redes de deriva. Así, se
decide poner un límite en los kilogramos de pesca que puede recoger en un mes un barco pesquero. Desarrolle un programa en C
al que primero se le dé el límite máximo permitido por ley y luego se le vayan dando los pesos de lo que se va pescando. Cada vez
que se introduzca un nuevo peso se mostrará el total de kilogramos pescados hasta ese momento. Cuando se supere el máximo
permitido se debe dar la alarma (desplegar un mensaje) y terminar el algoritmo, indicando el total de kilogramos pescados y el
número de kilogramos en los que se ha sobrepasado el limite legal. El algoritmo también terminará si introducimos un 0 (cero)
como kilogramos pescados y deberá indicar un error si se introduce un número negativo (no se contabiliza).

116-Realice un programa en C para determinar el valor que deben pagar los clientes de un restaurante (factura) y el total recaudado
por el restaurante. El restaurante tiene 15 mesas, cada mesa realiza un número no determinado de pedidos (cantidad y valor) hasta
que el pedido (cantidad) sea 0. Adicional al valor de la factura se incrementa el 10% por concepto de propina.

117-El vendedor de una compañía de electrodomésticos desea llevar un cálculo de las ganancias obtenidas por las ventas del mes.
Los artículos con costo menor a $5000, le reportan una ganancia del 15%, para los artículos con un valor entre $5000 y $12000
(inclusive), obtienen una ganancia del 20%, y los artículos que valen más de $12000 le dejan un 30% de ganancia. Sabiendo que
cada artículo tiene un código, un nombre, un precio y que ningún artículo tiene por código 0(cero), haga un programa en C, que
de acuerdo al número y costo de artículos vendidos en el mes, obtenga las ganancias.

118-Hacer un programa en C que le permita al profesor de programación hallar el total de estudiantes que aprobaron, el total de
estudiantes que perdieron la materia y el promedio de notas de sus estudiantes. Sabiendo que cada estudiante tiene un número
diferente de notas y que para calcular la definitiva de un estudiante, se suman las notas y se dividen por el número de notas

119-En el curso de programación hay n estudiantes, y para calcular la definitiva de un estudiante se utilizan 3 notas, cada una con
los siguientes pesos: 25%, 35% y 40% respectivamente. El profesor desea construir un algoritmo que calcule la definitiva para cada
uno de los n estudiantes y que calcule el promedio de notas de los estudiantes que pasaron, el promedio de notas de los estudiantes
que perdieron y el promedio de notas de los estudiantes cuya nota esté entre 4 y 5.

120-Hacer un programa en C que capture n números y halle el mayor de los pares y el menor de los impares

121-Se dice que un número N es número perfecto si la suma de sus divisores propios es igual a él mismo.
El conjunto de divisores propios de un número N, está formado por todos sus divisores, excepto él mismo. Ejs, los divisores
propios de 9 son 1 y 3. Los divisores propios de 6 son 1,2 y 3.
Por lo tanto 6 es un número perfecto porque la suma de sus divisores propios 1 + 2 +3 es igual a él mismo (a 6). Hacer un
algoritmo que lea un número y diga si es perfecto o no.

122-El banco Santander tiene una modalidad de préstamo que consiste en lo siguiente:
Si el monto del préstamo es menor de 1.000.000 de pesos se paga un interés del 5% sobre le préstamo, pagando cuotas mensuales
por un año
Universidad de Pamplona 34
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Si el monto del préstamo es mayor o igual de 1.000.000, pero menor de 10.000.000 de pesos se paga un interés del 10% sobre le
préstamo, pagando cuotas mensuales por dos años.
Si el monto del préstamo es mayor o igual de 10.000.000 de pesos se paga un interés del 15% sobre le préstamo, pagando cuotas
mensuales por cinco años.
Hacer un programa en C que calcule el valor de la cuota mensual que tiene que pagar cada uno de los n cliente que solicitan un
préstamo

123-En una universidad la matricula de los alumnos se determina según el número de materias que cursan. El costo de todas las
materias es el mismo. Se ha establecido un programa para estimular a los alumnos, el cual consiste en lo siguiente: si el promedio
obtenido por un alumno en el último periodo es mayor o igual que 4, se le hará un descuento del 30% sobre el valor de la matricula
y no se le cobrara IVA; si el promedio obtenido es menor que 4 deberá pagar la matricula completa, la cual incluye el 16% de IVA.
Hacer un programa en C para Obtener cuanto debe pagar cada uno de los n alumnos de una institución y hallar la matricula
promedio

124-El profesor de fundamentos de programación, acordó con sus alumnos las siguientes reglas para la calificación final de la
materia:
La calificación final se obtiene de 3 notas parciales, que tienen igual peso
Si la nota es mayor de 3.5 se le suman 4 puntos. Es decir si la nota obtenida es de 3.7 el profesor suma 4 puntos, luego su nota final
será de 4.1 (si la nota calculada da más de 5 la definitiva se deja en 5).
Si la nota es menor de 2.5 se le resta 3 puntos. Es decir que si la nota obtenida es de 2.2 el profesor resta 3 puntos, luego su nota
final será de 1.9. Si la nota resultante fuese menor que 0 (cero) la definitiva se deja en 0 (cero).
Diseñe un programa en C que capture las 3 notas para cada uno de los "n" estudiantes de un grupo e imprima la nota final. Tenga
en cuenta que las notas que el computador imprima, siempre deben estar entre 0 y 5

125-Haga un programa en C para calcular el valor a pagar en pesos de la factura del celular conociendo el tipo de plan, los minutos
consumidos y la cantidad de mensajes de texto enviados en el mes, según la siguiente tabla:
Tipo de plan Minutos Básicos Mensajes de Texto Básicos Cargo Básico
1. Ideal 100 10 80.000
2. Extensión 135 20 120.000
3. Familiar 425 30 180.000
Cada minuto extra tiene un costo de 855 pesos y los mensajes de texto un costo de 370 pesos (Para cualquier plan).

126-Escriba un programa que lea un número n e imprima si es deficiente, perfecto o abundante.


Un entero positivo se dice que es un perfecto si la suma de sus divisores propios es igual que el número Por ejemplo, 6 es
perfecto porque 1+2+3=6;
Un entero positivo se dice que es un deficiente, si la suma de sus divisores propios es menor que el número Por ejemplo, 8 es
deficiente porque sus divisores propios son 1, 2 y 4, y 1+2+4 <8;
Un entero positivo se dice que es un abundante si la suma de sus divisores propios es mayor que el número. Por ejemplo, 12 es
abundante, porque 1+2+3+4+6>12.
Los divisores propios de un entero n son los divisores positivos menores que n.

127-En el Departamento de Sistemas de la Universidad se han programado N grupos de la asignatura de Programación I (N es dado
por teclado). Cada grupo tiene diferente cantidad de alumnos (no especificada por teclado) y por cada Alumno nos proporcionan
su código y tres calificaciones. Se debe calcular la definitiva de cada alumno de acuerdo a la siguiente ponderación de las
calificaciones:
Def = Cal1 * 35% + Cal2 * 35% + Cal3*30%. El proceso de un grupo termina cuando el código del alumno es 0.
Hacer un programa en lenguaje C que calcule e imprima la definitiva y el código de cada alumno. Calcule e imprima además el
promedio grupal obtenido en la asignatura por cada uno de los N grupos. Hallar e imprimir además el porcentaje de alumnos que
aprobaron la Asignatura Programación I. (se aprueba con 3.0 ó superior).

128-Calcular e imprimir el valor total de matricula de un alumno. Dicha liquidación se realiza con base a la cantidad de créditos
matriculados en el semestre así:
Los primeros 20 créditos cada uno tiene un costo $15.000
Los siguientes 15 créditos cada uno tiene un costo $25.000
Los créditos que estén por encima de los 35, cada uno tiene un costo $35.000
Dependiendo de la edad del estudiante se puede obtener un descuento así:
Universidad de Pamplona 35
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Edad Descuento
<20 10% en la tarifa de los créditos matriculados entre los 21 y 35
>40 5% en la tarifa de los créditos matriculados superiores a 35
>20 y <40 20% en la tarifa de los 20 primeros créditos matriculado
Ejemplo: El alumno tiene 25 años y matriculo 38 créditos. La liquidación se haría así:
Los primeros 20 Créditos 20*15000 $300.000
Los siguientes 15 créditos 15*25000 $375.000
Los siguientes créditos 3*35000 $105.000
Descuento es del 20% sobre los primeros 20 créditos, por que la edad es de 25 años -$150.000
(20*(15000*20%))
Total Matricula $630.000

129-Hacer un programa en C para leer por teclado un número N (de cualquier cantidad de cifras), descomponerlo en sus dígitos y
calcular: La sumatoria de sus cifras pares y La sumatoria de las cifras impares
Ejemplo:
N es 1275
Sumatoria de dígitos pares 2 porque el único dígito par es 2
Sumatoria impares 13 porque los dígitos impares son 1 7 y 5
b
i3
130-Codifique un programa en C que calcule la siguiente sumatoria s=∑ para 20 valores distintos de a y b leídos por
i=a i + 4
teclado. Es decir, debe hacer 20 veces el cálculo de la sumatoria para valores distintos de a y b. Por ejemplo: Para a=3 y b=5
se tiene que:
33 43 53 27 64 125
S= + + = + + = 25.7460
3+ 4 4+ 4 5+ 4 7 8 9
131-Codifique un programa en C que lea por teclado cierta cantidad de números hasta teclear 0 (cero). El programa debe validar
que cada uno de estos valores tecleados estén entre un intervalo [a,b] (a y b son dos números leído por teclado). El programada
debe imprimir la suma de aquellos valores que sean múltiplos de un valor z también leído por teclado.
Por ejemplo para a=8, b=96 (intervalo [8,96] ) y z=4, se deben leer ciertos valores hasta encontrar un cero como por ejemplo 9,
13, 93, 16, 19, 27, 33, 36, 41, 59, 11, 24, 0. La suma de los múltiplos de z (z=4 en este caso) es 76

132-Una lavandería ofrece sus servicios a la ciudad de Pamplona de acuerdo a la siguiente tabla.
Peso de Ropa 0 Kg a 2,0 Kg 2,1 Kg a 4,0 Kg
Tipo Cliente
1. Normal $200 $500
2. Especial $150 $450
Dada la información de N clientes(N dado por teclado): Tipo de Cliente y Peso de la ropa, Hacer un programa en C para
Determinar cuanto debe pagar cada cliente y el promedio de kilos de ropa que llevan los clientes.
El kilo adicional o fracción después de los 4 kilos tiene un valor de 100 pesos.
Ejemplo Otro ejemplo
Tipo cliente: 2 Tipo cliente: 1
Peso de Ropa: 3,5 Peso de Ropa: 7,0
Paga $ 450 pesos 500 por los 4 kilos normales
100 x 3(kilos adicionales)= 300 pesos por lo adicional
Paga $ 800 pesos

133-Realizar un programa en C que permita leer un número N y contar el número de cifras que tiene, si el número de cifras es par
elevar el primer dígito del número a la suma de cifras, si el número de cifras es impar, elevar el último dígito del número a la suma
de las cifras e imprimir el resultado de la potencia.
Ejemplo
N= 34562
Número de cifras es 5
Universidad de Pamplona 36
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Calcular 2 elevado a la 5 = 32

134-José tiene un capital de 1’000.000 de pesos que decide invertir en su totalidad, distribuidos en dos negocios, en uno de los
negocios gana el 2% mensual y en otro el 3% mensual sobre lo invertido y mes a mes los intereses se van acumulando como
capital. Realizar un programa en C para que conociendo el valor invertido (dado por teclado) en uno de los negocios, se cuente el
número de meses que son necesarios para que con estos negocios José pueda comprar un automóvil usado cuyo valor es dado por
teclado.

135-Los hinchas del Cúcuta Deportivo han decidido donar el total del cambio (los vueltos de cada hincha) (dinero sobrante de cada
compra) en la compra de boletas del partido del próximo domingo, para apoyar a los niños desplazados. Diseñe un programa en C
que solicite inicialmente la cantidad de boletas disponibles para el partido y el valor unitario de estas. El programa debe solicitar
repetidamente la cantidad de dinero que entrega el hincha en la taquilla e ir mostrando la cantidad de boletas para las que alcanza
ese dinero, las cuales se le entregarán al comprador (pero no se le entrega el dinero de vueltos... este dinero es la donación). Al
final del programa se debe imprimir el total de boletas vendidas, el total de dinero recaudado por concepto de boletería y el total de
dinero donado por los compradores. El programa terminará cuando la cantidad de dinero entregado por un hincha en la taquilla sea
igual a cero o cuando se agote el total de boletas disponibles.

136-Escriba un programa en C que lea por teclado un número N e imprima si es un Número Feliz:
Número feliz: todo número natural que cumple la condición de que si se suma los cuadrados de sus dígitos y se sigue el mismo
proceso con los resultados parciales hasta obtener un solo dígito... el resultado es 1. Por ejemplo, el número 203 es un número feliz
ya que
2 2 + 0 2 + 3 2 = 13 el mismo proceso para el 13 es 12 + 3 2 = 10 , el mismo proceso para el 10 es,

12 + 0 2 = 1 ...... como el resultado es de un solo dígito ( en caso contrario seguir el proceso), se detiene el proceso para este
ejemplo (porque el resultado es de un solo dígito)

19 es feliz porque 12 + 92 = 82 el mismo proceso para 82 .... 82 + 22 =68 el mismo proceso para 68 62+82 = 100 el mismo proceso
para 100 12 + 02 + 02 = 1

137-Se dice que un número es CUBO INTERESANTE si puede ser representado como la suma de los cubos de sus dígitos.
Desarrolle un programa en lenguaje C para imprimir en pantalla los 4 primeros cubos interesantes entre todos los enteros mayores
a 1. Uno de esos números es 153 pues:
153= 13 +53+33 = 1+125+27=153

138-Un peaje de la ciudad quiere que usted sistematice el control del pago de los peajes, por este pasan tres tipos de automotores:
1. Vehículos, 2. Camiones y 3. Tractomulas no se sabe cuantos de estos pasan al día por el peaje, pero cuando el día finaliza se
registra un tipo de automotor cero 0.
El cobro por cada tipo de automotor es el siguiente:
Tipo Valor
1. Vehículo $ 3.500
2. Camión $ 12.000
3. Tractomula $ 16.300
Desarrolle un programa en C donde conociendo el tipo de automotor determinar:
El valor a pagar por cada automotor que pase por el peaje
Total recaudado en el peaje en ese día.
Total recaudado por cada tipo de automotor.
Cual es el tipo de Automotor que más transita por el peaje.

139-Realiza un programa en C, que lea un entero n y un dígito d se debe invertir el numero n y si d aparece en n se debe
reemplazar por el valor 1 en la posición en la que se encuentra d. Por ejemplo: si n=23668 y d=6. Se desplegaría 81132.
Además se debe imprimir:
Cuantos números se reemplazaron y cuantos no se reemplazaron.
El aplicativo también debe informar al usuario de cuantas cifras era el número entero n leído
Universidad de Pamplona 37
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
140-En la oficina de personal de una empresa se esta llevando la nómina de sus trabajadores. Se desea saber el salario mensual de
los trabajadores, dependiendo de las horas que cada uno ha laborado. Se debe saber la cédula del trabajador y cuantas horas ha
laborado en el mes, teniendo en cuenta cuantas horas han sido en horario normal, cuantas nocturnas y cuantas en día festivo.
Si las horas son normales se pagan a $ 9500 la hora, si son nocturnas su valor se incrementa un 15%, y si son festivas se
incrementa un 25%. Se debe mostrar para cada trabajador su cedula y el salario mensual. El programa termina cuando se ingrese
como dato del trabajador la cédula cero.
Además se debe saber cuantas horas normales, cuantas nocturnas y cuantas festivas han sido liquidadas por la empresa en el mes.

141-Calcular cuánto debe cancelar cada uno de los usuarios que ingresan a una peluquería, teniendo en cuanta que, los servicios
que pueden recibir son:
Tipo de servicio Descripción Valor
1 Manicure 6000
2 Corte de cabello 10000
3 Tintura 50000
Cada usuario llega a utilizar un tipo de servicio. A cada uno de los usuarios se le entrega un ficho que contiene un
número entero (registrado mediante el teclado), si el ficho es un número par se le da un 10% de descuento, si es impar
un 5% sobre el servicio que adquiere. No se sabe cuantos usuarios ingresan a la peluquería. El programa se termina
cuando el ficho del usuario sea 0.
Además se debe determinar: Cuántos usuarios ingresaron a la peluquería, Total recaudado en el día, Cuanto dinero suman los
descuentos realizados.

142-El propietario de un invernadero desea adquirir un software que le permita conocer el tiempo promedio de días que debe
mantener en el invernadero una planta de una familia, hasta alcanzar su tamaño máximo, teniendo en cuenta que:
La información a procesar corresponde a 50 plantas. Por cada planta se debe especificar la familia a la que pertenece y el tamaño
actual con el que ingresa al invernadero (en metros). Las familias de plantas existentes son 1. Cactáceas, 2. Pináceas, y 3.
Liliáceas. Las plantas tienen un crecimiento por día, y alcanzan un tamaño máximo de acuerdo a la siguiente tabla (Al alcanzar la
altura máxima las plantas paran de crecer.):
Familia % de crecimiento por día, respecto al día anterior Tamaño Máximo
1. Cactáceas 2% 20 mts
2. Pináceas 10% 100 mts
3. Liliáceas 3% 4 mts
Realice un programa en lenguaje C++ que permita conocer por cada una de las familias el tiempo promedio (en días) necesario
para que las plantas alcancen su tamaño máximo.
Tenga en cuenta que los datos de entrada por cada una de las 50 plantas son: la familia de la planta (validar que el valor ingresado
corresponda a una familia valida 1, 2, o 3, de lo contrario deberá volver a solicitar dicho dato) y el tamaño inicial de la planta
(validar que el tamaño ingresado no exceda al máximo de la planta (de acuerdo a la tabla), de lo contrario debe solicitar
nuevamente un valor para dicho dato). Por cada planta se debe calcular el total de días que necesita para alcanzar la altura máxima,
según el porcentaje de crecimiento diario dado en la tabla.

143-En un parqueadero de la ciudad de Pamplona se cobra por minutos (a 15 pesos el minuto) y dada la proximidad del mundial de
fútbol, los administradores del parqueadero decidieron ofrecer la siguiente promoción:
Los autos cuyo número de placa termina en número par tiene un descuento de 10% si se registra la entrada entre las 9:00 am y las
12 del medio día y los números de placa que terminan en número impar tienen un descuento del 15 % si se registran a la entrada
entre las 14:00 y 15:00 horas.
Los vehículos van llegando a diferentes horas y cuando el cliente retira el vehículo se registra la hora de entrada (hora y minuto,
dos números enteros), de salida (hora y minuto, dos números enteros) y el número de placa (numero entero de tres cifras)
Hacer un programa en C que permita averiguar cuando dinero recolectó el parqueadero en un día de servicio, para lo cual se
registrara la información correspondiente de un número no conocido de vehículos (el proceso termina cuando la placa del vehículo
sea cero)

144-Realice un programa en C donde lea un número de cualquier longitud y calcule la suma de los dígitos pares y la de los
impares.
Si los pares son menores que los impares, divida (división entera) la suma impar entre la suma par mediante restas sucesivas,
determinando el cociente y el residuo.
En caso contrario eleve la cantidad par a la potencia impar.
Por ejemplo: Si al ingresar el numero: 5237650
Universidad de Pamplona 38
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
La suma par da: 8 (2+6)
La suma impar da: 20 (5+3+7+5)
Como la suma impar es menor que la impar se debe dividir 20 entre 8 mediante restas sucesivas de la siguiente forma:
20 – 8 = 12
12 -8 = 4
Entonces el cociente es 2 porque se realizaron dos restas. Y el residuo es 4, pues fue lo que quedó de la última resta

5 Programación Modular (Funciones)


Una función es un conjunto de instrucciones (estructuras de control) que realizan una tarea específica y puede retornar un único
valor. Las funciones pueden utilizar datos de entrada llamados parámetros que permiten el intercambio de datos entre el llamado de
la función y la ejecución de la misma. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para
implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código.
Cuando una función es invocada (llamada) se le pasa el control a dicha función, una vez que esta finalizó con su tarea el control es
devuelto al punto desde el cual la función fue llamada, retornando un único valor.

Programa Función 1
principal Inicio Función 3
Inicio
Instrucciones Inicio
Propias
De la función
Llamada a la
función 1 Instrucciones
Propias
Llamada
De la función
a la función 3

Llamada a la Retorna valor


función 2 Retorna valor

fin

Función 2
Inicio

Instrucciones
Propias
De la función

Retorna valor
Cada función se puede considerar como un programa totalmente independiente, es decir que se ejecuta en su propio espacio de
memoria, por lo tanto cada función una vez llamada (invocada) recibe los parámetros como variables de su propio contexto, y
procesa sus propios datos almacenados en su memoria de datos. Una función no debe acceder a datos del programa principal o de
otra función, y solo es posible intercambiar datos entre funciones o entre el programa principal y las funciones por medios de
parámetros. Los parámetros son datos de entrada para la función y por lo tanto se necesitan para que la función ejecute la tarea para
la cual fue diseñada. Una vez terminadas las instrucciones que componen la función se retorna (opcionalmente) un valor al lugar
donde se hizo el llamado (invocación) de la función.
Una vez la función termina su proceso y retorna un valor (a donde fue invocada) el espacio de memoria donde se ejecuto la función
deja es liberado (deja de existir), por lo tanto las variables locales dejan de existir y es por ese motivo que los valores de la
variables locales se pierden y no es posible recordarlas entre dos llamados de la misma función.
Universidad de Pamplona 39
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Dado que una función maneja su propio espacio de memoria, los nombres de las variables de la función pueden tener el mismo
nombre de las variables del programa principal o de otras funciones, sin embargo es necesario recordar que sin importar si tienen el
mismo nombre, son dos variables diferentes y cada una tendrá su propio valor, la única diferencia es que la función solo puede
acceder (usar) su propias variables y no tiene acceso a otros espacios de memoria de otras funciones o del programa principal.
Existen dos tipos de parámetros en una función: los parámetros por valor y los parámetros por referencia. En este curso solo se
utilizan los parámetros por valor (los parámetros por regencia se introducen en el siguiente curso cuando se utilizan los vectores.
Como todas las funciones solicitadas en esta guía usan parámetros por valor es necesario explicar su funcionamiento : Cuando una
función es llamada se le entrega un conjunto de datos dentro de paréntesis a los cuales llamaremos Argumentos, la función se
empieza a ejecutar creando su propio espacio de memoria y saca una copia de los valores de los argumentos en los respectivos
parámetros (por eso se llaman parámetros por valor.. pues los parámetros extraen los valores de los argumentos sacando una
copia). La función puede definir todas las variables locales que necesite para realizar su proceso, con los parámetros que contienen
una copia de los valores de los argumentos, realiza el proceso requerido y retorna el valor correspondiente. Dentro de la función se
pueden modificar las variables que actúan como parámetros sin que los argumentos sufran dichos cambios.

Programa principal Llamada


Función 1
Memoria de
Memoria a la función 1 Memoria de
Instrucciones Memoria
de datos Con los Instrucciones
Inicio argumentos de datos
a b correspondiente
Función (parámetros)
Parámetros
p h

i=1; n ; 1
c
n no
Condición
Variables
s Locales
i
i x
Retorno
de valor x
no i
Condición Calculado
en la
función 1 Condición

n
edad
peso
fin c

Función 2 Retornar valor


Memoria de
Memoria
Instrucciones
de datos
Función (parámetros)

Parámetros
x y
Condición no Variables
s Locales
i w i

Condición
m

Retornar valor
Universidad de Pamplona 40
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Ejercicios recomendados para el estudio mínimo de funciones

147, 153, 157, 160, 164, 173, 175, 178, 180, 184

 0 si n = 0
145-Hacer la función Factorial. n!= 
1x 2 x3x 4....n si n > 0

 0 si x=0 y y≠0
 1 si x≠0 y y=0


146-Cree la función Potencia x = 
y y
x( x ) 1
si y>0
 1 −y si y<0
 x
no definido si x=0 y y=0
15
x 2 k +1
147-Calcule la siguiente formula Seno( x) = ∑
k = 0
( − 1) k
( 2 k + 1) !
148-Escriba una función llamada bisuma que calcule la suma de dos variables num1 y num2 enteras y regrese un resultado entero.
Escriba una función llamada media_de_3 que reciba como parámetro un dato entero y lo divida entre 3. Suponga que el dato
enviado a la función es el total de sumar 3 números, por lo que el resultado de esta función será la media de los 3 datos. Codifique
un programa que lea tres valores enteros para las variables a, b, c, que enseguida invoque a las funciones bisuma y media_de_3 y
que, por último, despliegue el valor promedio de los tres datos con un mensaje apropiado. ¿Qué cambios necesitaría realizar a las
funciones para obtener el promedio de más de 3 datos?

149-Escriba una función llamada cuadrado que tenga un parámetro de entrada llamado longitud y entregue como resultado el
perímetro del cuadrado cuyo lado sea la longitud especificada y su área. Todas las variables son reales.

150-Escriba una función llamada magnitud que tenga cuatro parámetros de entrada llamados x1, x2, y1, y2 y que entregue como
resultado la distancia entre dos puntos cuyas coordenadas son (x1, y1) y (x2, y2) según la siguiente fórmula:
dist = ( y 2 − y1 ) 2 + ( x 2 − x1 ) 2

151-Un piso rectangular que mide 12 metros por 15 metros está cubierto parcialmente por tapetes circulares. El radio de un tapete
es un metro. El radio del otro es de dos metros. Analice, diseñe y codifique un programa que encuentre el área de la parte del piso
que está descubierta.
El programa deberá tener:
Una función que reciba como parámetro el radio de un círculo y que regrese el valor del área de ese círculo. Suponga que el radio
y el área son reales.
Una función con dos parámetros reales que calcule el área de un rectángulo de base y altura dadas.

152-Dado un número entero N por teclado, hacer un programa en C con funciones para que calcule calcular la siguiente expresión
Z
X
  donde X es la suma de los divisores pares de N; Y es la suma de los divisores impares de N y Z es el número de dígitos de
Y 
N.

Ejemplo: Si el número N es 12 los divisores pares de 12 son 2,4,6 y 12 por lo tanto X=24 y los divisores impares de 12 son 1 y 3
Z 2
X  24 
por lo tanto Y= 4. Además 12 tiene 2 cifras(Z=2), por lo tanto la expresión es igual a   =   = 6 = 36 es decir que
2

Y   4 
el programa debe imprimir 36.

153-Escriba una función llamada digfinal que tenga un parámetro de entrada llamado número y que entregue como resultado el
dígito de las unidades del número. Por ejemplo, si el número es 234, el resultado es 4.
Universidad de Pamplona 41
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

154-Escribe una función que tome 3 parámetros: dos de tipo enteros y uno de tipo carácter. La función deberá sumar, restar,
multiplicar o dividir los valores de los dos primeros parámetros dependiendo del código indicado en el tercer parámetro, y devolver
el resultado. (el carácter será ‘+’, ‘-‘, ‘ * ’, y ‘/ ’)

155-Escribe una función que devuelva el (a) factorial, (b) n-simo número de Fibonacci, de su argumento.

156-Escribe una función con dos parámetros de tal forma que diga si sus dos parámetros son múltiplo el uno del otro (no importa
cuál de cuál).

157-Euclides encontró que para dos números enteros a y b cualesquiera:


mcd(a, b) = mcd(b, a)
mcd(0, b) = b
mcd(a, b) = mcd(a - b, b)
Escribe una función que devuelva el máximo común divisor de sus dos argumentos:
mediante restas. Téngase aquí en cuenta que intercambiando los valores de a y de b y que debe existir un valor de mcd, siempre se
llegará mediante restas (el mayor menos el menor) a un valor de la resta a’ –b’ que dará cero, dejando así el valor b’ como mcd.
Los valores de a’ y b’ son resultados de restas anteriores que tienden necesariamente a 0 y al mcd, respectivamente.
mediante división modular. Con esto se ahorran n = a DIV b restas, y se usa directamente el resto de esas n restas, que es el módulo
a MOD b..

158-(**)Escribe una función para calcular el mcd pero mediante la técnica práctica de: “comunes con el menor exponente” de sus
descomposiciones factoriales. Por ejemplo: 24 = 23 × 3 y 9 = 32, de modo que mcd(24, 9) = 3.
NOTA: Para descomponer el número n en sus factores primos, ir dividiendo (y contando cuántas veces se puede dividir) por cada
primo hasta la n ).

159-Escriba una función que imprima los divisores y la suma de los divisores de todos los enteros que se encuentran entre dos
valores m y n dados por el usuario. Por último la función debe regresar cuál fue el número cuya suma de divisores fue mayor. Por
ejemplo, si m=100 y n=110, entonces la salida será:
i Divisores suma
100 1 2 4 5 10 20 25 50 100 217
...
110 1 2 5 10 11 22 55 110 216

160-Se dice que dos números a y b son “amigos” si cada uno de ellos es la suma de los divisores del otro. Por ejemplo, los más
pequeños son 220 y 284; comprobémoslo:
DivisoresDe(220) = (1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110)
SumaDivDe(220) = 284
DivisoresDe(284) = (1, 2, 4, 71, 142)
SumaDivDe(284) = 220
a. escriba una función que recibiendo dos números devuelva si son amigos o no
b. escriba una función que tenga como entrada un número natural n y que ‘escriba’ todas las parejas de números amigos que
existan menores que n.

161-Haga un programa que despliegue un menú que ayude en la operación de la pizzería “Domino Cicom”. El programa debe
contener dos funciones:
Pedido: solicita al usuario el tamaño de la pizza que desea ordenar y el número de ingredientes que debe contener, y
Calcula: determina el precio de la pizza y el tiempo de entrega del pedido realizado.
Las pizzas chicas (‘c’) cuestan 70 pesos, las medianas (‘m’) 90, las grandes (‘g’) 110 y las familiares (‘f’) 130. Además, cada
ingrediente solicitado cuesta 10 pesos.
El tiempo de entrega de las pizzas es de 20 minutos, a menos que sea una pizza familiar o que tenga más de 3 ingredientes, en cuyo
caso el tiempo de entrega es de 30 minutos.

162- (**) Hacer un programa utilizando funciones que visualice el triángulo de Pascal.
1
1 1
Universidad de Pamplona 42
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
Recuerde que, por ejemplo, la tercera línea está dada por los combinatorios:
C 02 C12 C 22
Utilice una función entera: combinaciones(r, k) que regrese las combinaciones de r tomadas de k en k. Suponga que r
representa el renglón del triángulo y k la columna del mismo.
r!
C kr =
k! (r − k )!
Esta función, a su vez, utiliza otra función auxiliar: factorial (r)

163-Haga un programa que le permita al usuario obtener los valores de las funciones trigonométricas: seno, coseno, tangente y
cotangente, utilizando las series de Taylor descritas en la sección anterior de esta guía.
El programa debe utilizar una función que le muestre al usuario un menú con las diversas operaciones, en donde se debe incluir la
posibilidad de terminar. El programa llamará a la función correspondiente a la opción elegida por el usuario, solicitándole antes el
valor de y que representa un ángulo en grados. Este valor debe ser convertido a radiantes mediante una función. Este proceso se
repetirá hasta que el usuario decida terminar.
El valor de x debe expresarse en grados y posteriormente convertirse a radianes para poder utilizar las fórmulas.
El fin del cálculo de la serie se dará cuando el valor absoluto del nuevo término sea menor o igual a 0.0001.
sen o( x) 1
Recordar también que: tang ( x) = y que Cottang ( x ) =
cos eno( x) tang ( x)

164-Hacer un programa en Lenguaje C de forma modular que calcule los números narcisistas del 1 al 10000, el programa deberá
generar una lista de aquellos números que cumplan con el requisito de ser narcisista.
Un número narcisista es un Número de n dígitos que resulta ser igual a la suma de las potencias de orden n de sus dígitos.
Ejemplo: 1 = 11
153 = 1³ + 5³ + 3³.
9474 = 94 + 44 + 74 + 44
El programa deberá contener las siguientes funciones:
 Una función que cuente el número de dígitos de un número entero
 Una función potencia para calcular el resultado del dígito elevado a dicha potencia.
 Una función donde se desglosará el número en cifras, calcule la suma de potencias y diga si el número es o no narcisista.
165-La empresa metalmecánica del oriente nos contrata para diseñar un programa que muestre rápidamente el valor de las escalas
de temperatura de diferentes elementos de dicha empresa. Diseñe un programa en lenguaje c que muestre en pantalla un menú con
4 opciones así 1.Centígrados 2.Fahrenheit 3.kelvin 4.salir. El usuario al digitar la opción correspondiente deberá escribir el valor de
la temperatura en dicha escala y luego se muestra en pantalla el valor de la temperatura digitada en las otras dos escalas. Por
ejemplo si se escoge 1 y se escribe 32 se muestra en pantalla Centígrados 32, Fahrenheit 89.6 y Kelvin 305.15 La conversión de
temperaturas se basa en las siguientes formulas
Centígrados (C) a Fahrenheit (F) F= C x (9 / 5) + 32
Fahrenheit (F) a Centígrados (C) C= (F-32) x (5 / 9 )
Centígrados a Kelvin(K) K = C + 273.15
Kelvin(F) a Centígrados(C) C = K - 273.15
Diseñe las funciones en C que realicen las conversiones de temperaturas necesarias para cada una de las opciones y utilice estas
funciones en el main para dar respuesta al menú.

166-Determine la cantidad mínima de billetes y muestre la forma de pagar una cuenta (considere la cuenta en múltiplos de $
10.000 únicamente), sabiendo que las denominaciones disponibles de los billetes son $10.000, $ 20.000 y $ 50.000.
Nota 1: Debe validar que el valor de la entrada (cuenta) sea múltiplo de 10.000 por medio de una función que tiene como
parámetro el valor de la cuenta y devuelve 1 si es múltiplo de 10.000 ó 0 si no lo es .
Universidad de Pamplona 43
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Nota 2: Debe implementar una función que tiene como parámetros el valor de la cuenta y la denominación del billete y que
devuelve el número de billetes de esa denominación que se utilizarán para pagar la cuenta.

167-Hacer una función en C que permitan calcular la suma de los divisores pares de un número entero positivo dado y otra función
que permita calcular la suma de los divisores impares de un número entero positivo dado.
En el main del programa capturar un número entero positivo y hallar el cociente entre la suma de los divisores pares sobre la suma
de sus divisores impares.

168-Cree un programa en C modular que: descomponga un número N de 6 dígitos en tres números de 2 dígitos y calcule la

x !+ z
y
R=
siguiente formula:
( x + z )! donde x, y, z se encuentran son los tres números de dos cifras que componen el

número N
Ej: N = 230411 al descomponer el número x=23 y=04 z=11
Cree las siguientes Funciones:
 Función verificar que recibe el número N y determina si el número es de 6 dígitos, Si es de 6 dígitos debe retornar un 1
pero si no debe retornar un 0.
 Función Calcular que recibe el número N y lo descompone para calcular el resultado de la formula
 Función Potencia
 Función Factorial
169-Realizar las siguientes funciones:
 Una función denominada calcular_sumatoria_divisores que reciba un valor n y devuelva la sumatoria de los divisores
propios del valor n.
 Una función denominada valorar que reciba dos valores (el valor n y la sumatoria de los divisores propios de dicho
número) y devuelva : 0 si es perfecto, 1 si es abundante, 2si es deficiente
El programa principal (main) debe calcular entre X y Y leídos por teclado, cuantos números son deficiente, abundantes y
perfectos. Para realizar estos procesos debe utilizar las funciones anteriores definidas en el presente enunciado.
Número perfecto es cuando la suma de sus divisores propios es igual al número ejemplo el 6 sus divisores son 1+2+3 = 6
Número deficiente cuando la suma de sus divisores es menor al número ejemplo 4
Divisores 1+2 =3
Número abundante cuando la suma de sus divisores es mayor al número ejemplo 12
Divisores 1+2+3+4+6 =16

170-Dados dos números X y N enteros positivos, calcular con la ayuda de dos funciones la siguiente formula matemática:

( N + (1 + X )!) X
( X * 2) N !
Realizar:
Main
Función de potencia
Función de factorial

171-Se dice que dos número N y M son números amigos si la suma de los divisores propios de N da como resultado M y al
mismo tiempo la suma de los divisores propios de M da como resultado N.
El conjunto de divisores propios de un número N, está formado por todos sus divisores, Excepto él mismo. Ejemplo
Los divisores propios de 284 son 1,2,4,71 y 142 ; su suma resulta igual a 220.
Los divisores propios de 220 son 1,2,4,5,10,11,20,22,44,55 y 110; su suma resulta igual a 284.
Por lo tanto 284 y 220 son números amigos.
Hacer un programa en C que lea dos número (N,M) y diga si son amigos o no, haciendo uso de un subprograma (función) que
calcule la suma de los divisores propios de un número dado.

172-Realice un programa en C, que lea un número entero positivo N, para que acumule y calcule los números perfectos que existen
hasta el número N.
Universidad de Pamplona 44
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
 En el main() debe leer el valor de N, realizar el llamado a las funciones necesarias (evalua_perfectos y acum_perfectos) e
imprimir el resultado de dicho acumulado.
 Una función (evalua_perfectos) que permita evaluar, si el valor recibido es un número perfecto o no. Debe retornar el
valor 1 (si es perfecto) o el valor 0 (si no es perfecto)
 La función (acum_perfectos) que acumule el valor de los números perfectos menores que un número N dado (Haga uso
de la función anterior).
Ejemplo: Se lee n que es ( 30 ), entonces:
Perfectos que existen hasta N (30) : 6 , 28
Acumulado de los perfectos hasta N es : 34
Nota: Un número es perfecto si es igual a la suma de sus divisores, incluyendo al 1 y exceptuando a él mismo. Por ejemplo, 6 es
perfecto porque 6 =1+2+3.

173-Los estudiantes de la universidad de Pamplona están preocupados por sus definitivas y le han solicitado a usted que cree un
programa que lea el código del estudiante y las notas de los tres cortes (excepto la del examen final), el número de estudiantes es
indeterminado (la lectura termina cuando el código del estudiante sea 0), el programa debe determinar la nota acumulada del
estudiante, la nota que debe sacar el estudiante para pasar y el porcentaje de estudiantes que tiene el ponderado por encima de 2.5.
Realice:
 Main
 Función Acumulado: que Reciba las 5 notas (Nota 1 (Examen 20%), Nota 2 (TrabajoQuiz 15%), Nota 3 (Examen 20%),
Nota 4 (TrabajoQuiz 15%) y Nota 5 (TrabajoQuizFinal10%)) y retorne en cuanto lleva la materia el estudiante.
 Función Cálculo: que reciba en cuanto lleva el estudiante la materia y retorne cuanto debe sacar en el último examen para
pasar la materia.

174-Hacer un programa en C utilizando funciones que lea un número entero positivo de cualquier cantidad de dígitos (cifras), que
averigüe e imprima lo siguiente: si la cantidad de cifras es impar averiguar si el número es capicúa (Ej:585,25352) y el si la
cantidad de cifras es par, averiguar si el número es múltiplo de 4 y termina en 8 (Ej:28).
NOTA: Debe tener las siguientes funciones:
 main.
 Una función que reciba el número leído y devuelva 1 (UNO) si la cantidad de cifras es impar y devuelva 0 (CERO) si la
cantidad de cifras es par.
 Una función que reciba el número cuya cantidad de dígitos sea impar y que devuelva 1 (UNO) Si el número es capicúa
(Ej:585,25352) y devuelva 0 (CERO) si el número NO es capicúa. (Ej:485,35352).
 Una función que reciba el número cuya cantidad de dígitos sea par y que calcule e imprima si el número es múltiplo de 4 y
termina en 8. (Ej:28).

175-La biblioteca pública de la ciudad de Pamplona tiene sistematizado el total de libros que posee, y desea que usted cree un
programa que ayude en el control de préstamos y recolección de libros, la cantidad de personas que visitan la biblioteca es
indeterminada de ellos se conoce: Tipo de Servicio (1. Préstamo (Llevarse el libro para la casa) o 2. Entrega) y el código del libro.
El proceso de préstamo y recolección termina cuando el tipo de servicio es 0.
Realice un programa que lea el tipo de servicio y el código del libro y si es un código debe determinar si se puede prestar el libro o
el valor a cobrar por los libros prestados (según el tipo de servicio solicitado) y al final imprimir el total recaudado por prestamos
de libros.
El código del libro está compuesto por 8 dígitos donde los tres primeros representan el área del Libro, los siguientes dos la cantidad
de libros que existen y los últimos 3 el identificador del libro.
Ej: Para el código 10105153
El área es 101 la cantidad de libros es 05 y su código de identificación es 153
Realice:
 Main()
 Función Validar código: Debe recibir el código del libro y este debe cumplir: ser un número de 8 dígitos, el área debe
estar entre 101 y 108 y la cantidad debe ser diferente de 0. Si cumple debe retornar un 1(uno), si no cumple debe retornar
un 0 (cero).
 Función Préstamo: La función debe recibir el código del libro y solo se pueden prestar libros del área 101, 102 y 104. La
función debe retornar 1 (uno) si se puede prestar o 0 (cero) si no se puede realizar el préstamo
 Función Recolección: La función debe recibir el código del libro y dependiendo de la cantidad de ejemplares disponibles
se cobra un valor al usuario según la siguiente tabla, debe retornar el valor que se debe cobrar
Universidad de Pamplona 45
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Cantidad de ejemplares existentes Valor del servicio de préstamo
1a2 $2.000
3a6 $1.000
Mas de 6 $500

176-Dado un número de 6 cifras, hacer un programa en forma modular que realice lo siguiente:
Descomponga un número N de 6 dígitos en tres números de dos dígitos cada uno en la función main (siempre y cuando el número
sea de 6 dígitos). Ejemplo:
N = 121589 al descomponer el número a=12 b=15 c=89
Cree las siguientes Funciones:
 Función verificar que recibe el número N y determina si el número es de 6 dígitos, Si es de 6 dígitos debe retornar un 1
pero si no debe retornar un 0. si el numero es de 6 cifras debe continuar
 Función Calcular_tabla que recibe los números a y b y genera las tablas de multiplicar de a hasta b, donde a debe ser
menor que b. Ejemplo:
12 x 1 = 12 13 x 1 = 13 14 x 1 = 14 15x 1 = 15
12 x 2 = 24 13 x 2 = 26 14 x 2 = 28 15 x 2 = 30
12 x 3 = 36 13 x 3 = 39 14 x 3 = 42 15 x 3 = 45
…... . … .. ... .. . …. . .. . … . . . . .. .
12 X 10 = 120 13x10= 130 14x 10 = 140 15 x 10 = 150
 Función Unir que recibe a y c y debe retornar un solo numero resultado de unir a y c, el número devuelto debe quedar
de 4 cifras. Ejemplo: a = 12 c = 89, el número nuevo queda así: nuevo = 1289
 El main

177-Una empresa de seguros desea que usted cree un programa que permita validar el código de una póliza de seguro, determinar
el tipo de seguro y el valor que se debe pagar el cliente (monto) en una clínica al momento de presentar el seguro. La cantidad de
pólizas que se consultarán es indeterminado, solo se sabe que la lectura del código de las pólizas termina cuando este número sea 0.

El Código de la póliza esta compuesto por 7 dígitos donde el primero corresponde al tipo de póliza (Ver tabla). Los tipos de pólizas
de seguro son los siguientes.
Tipo Cobertura
1. Total El 100% del Total del pago
2. Normal Cubre el 100% si no sobrepasa 1’000.000 y si lo sobrepasa solo cubre el 70% del pago
3. Básica Para cualquier monto cubre el 65% del pago
Cree las siguientes funciones:
 Main
 Función Validar Código: que debe recibir el código de la póliza y verificar que el código sea de 7 dígitos, que el primer
dígito este entre 1 y 3 y la suma del último dígito con el primero debe ser par. Si cumple, el número de póliza es valido
debe retornar un 1 sino debe retornar un 0.
 Función CalcularPago: que debe recibir el código del seguro y el monto a pagar y retornará el valor que se debe pagar la
persona.

178-Haga un programa en C de manera modular (usando funciones) para el siguiente problema: la empresa “rapinet” ofrece el
servicio de Internet de acuerdo a las siguientes condiciones:
La tarifa se cobra por horas y minutos de la siguiente forma: Si el número de minutos es menor de 30 no se le cobran los minutos
extras (solo las horas enteras) si los minutos están entre 30 y 45 se cobra a 15 pesos los minutos que exceden de 30 y si los minutos
son mayores de 45 se le cobra una hora completa.
La tarifa por horas depende del número de horas que navegue de acuerdo a la siguiente tabla
Tiempo de navegación Valor a pagar por hora
De 1 a 5 horas 1500 pesos por hora
De 5 a 10 horas 1200 pesos por hora
Más de 10 horas 900 pesos por hora
La empresa ofrece el 10% de descuento sobre el total a pagar, para las personas cuya cuenta supere los 10000 pesos.
Universidad de Pamplona 46
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------
Dado por teclado el tiempo de navegación de cada una de las personas que reciben el servicio en un día, hacer un programa en C
que calcule el total a pagar de cada una de las personas que hacen uso del servicio y el total recaudado por la empresa en un día.
Para ello desarrolle las siguientes funciones
 Una función llamada “calcular” que calcule el total a pagar (sin descuento) conociendo el número de horas y minutos
navegados
 Una función llamada “descuento” que calcule el total de dinero a descontar por el servicio de Internet, conociendo el total
a pagar sin descuento.
 En el main se debe capturar las horas y minutos de navegación de cada uno de los clientes del día. Como no se conoce el
número de clientes que atiende la empresa durante el día, el proceso termina cuando el número de horas navegadas sea un
número negativo. En el main también hay que calcular el total recaudado por la empresa en dicho día.

179-Dado un número de cualquier cantidad de cifras, sumar las cifras que son menores o iguales del número de cifras que
componen el número.
Ejemplos
Si le número dado es 7428 tiene 4 cifras y los dígitos de 7428 que son menores o iguales de 4 son 4 y 2, por lo tanto la suma da 6
Si el número dado es 924 tiene 3 cifras y el único dígitos de 924 que es menor o iguales de 3 es el 2 y por lo tanto la suma es 2
Si el número es 23418 tiene 5 cifras y los dígitos de 23418 que son menores o iguales de 5 son el 2, el 3, el 4 y el 1 y por lo tanto
la suma es 10
Si el número dado es 7 tiene 1 cifra y este número no tiene dígitos menores o iguales a 1 por lo tanto la suma es cero
Hacer las siguientes funciones en C:
 Una función que dado un número entero como parámetro devuelva el número de cifras que tiene dicho número
 Una función que dado un número entero de cualquier cantidad de dígitos y un número entero de un dígito, sume los
dígitos del primer parámetro que sean menores o iguales del segundo parámetro
 Realizar el main en el cual se capture por teclado cinco números enteros de cualquier cantidad de dígitos e imprima para
cada uno de ellos la suma de los dígitos menores o iguales del número de cifras que tiene cada número tecleado

180-Una empresa tiene sus productos codificados mediante referencias compuestas por 4 cifras. Las dos primeras cifras
representan un consecutivo del producto, las siguientes dos cifras representan la línea de producción a la que pertenece (por
ejemplo la referencia 7211 esta asignada a un producto cuyo consecutivo es 72 y pertenece a la línea 11). En la empresa existen
solo tres líneas de producción 11, 22 y 44. Elabore un programa en C que lea n referencias validas de productos (n dado por
teclado), sus costos de producción y precios de venta e indique cual es el producto que más ganancia le genera a la empresa. Para
ello debe implementar las siguientes funciones:
 Una función que lea n referencias de productos, sus costos de producción y su valor de venta de cada uno y retorne la
referencia del producto que más ganancia le genera a la empresa.
 Una función que verifique si se trata de una referencia valida y retorne 1 si es valida y 0 si no lo es.
 Una función que reciba la referencia de cada producto, su costo de producción y su valor de venta y retorne el valor que
aporta de ganancia dicho producto.
 La función main
181-Desarrolle un programa que permita capturar por teclado 10 números ingresados por el usuario, de seis o más cifras. Para cada
número ingresado el programa deberá comprobar si el número es de seis o más cifras, si es así deberá separarlo en dos números
independientes (uno compuesto por las cifras pares y otro compuesto por las cifras impares), para el programa se deberán crear las
siguientes funciones:
 Función comprobar: La función deberá recibir como parámetro de entrada un número, y deberá retornar uno (1) si el
número es de seis o más cifras, y cero (0) si el número tiene menos de seis cifras.
 Función numerodescompuesto: La función deberá recibir como parámetro de entrada un número, deberá descomponerlo
en sus cifras (de derecha a izquierda) y deberá formar dos nuevos números uno con las cifras pares, y otro con las cifras
impares, la función debe retornar el número mayor de los dos generados.
 Ej. La función recibe como parámetro de entrada el número 1548792397563 deberá generar los siguientes números
157939753 y 4826, y deberá retornar el número 157939753 dado que este es el mayor de los dos generados.
 Función main: La función permitirá ingresar 10 números al usuario (implementar por medio de ciclo) y deberá realizar lo
solicitado en el programa usando las funciones antes descritas

182-Un factorión es un número que es igual a la suma de los factoriales, de los dígitos que lo componen. Por ejemplo 145 es un
factorión, ya que 1! + 4! + 5! = 1 + 24 + 120 = 145. Escriba un programa en C, utilizando funciones que encuentre los tres
primeros factoriones.
Universidad de Pamplona 47
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

183-Se necesita realizar un programa que imprima todos los números precisos que existen hasta el 5000. Un número preciso es
aquel que al elevar al cuadrado la cantidad de cifras que tiene, su resultado es igual a la suma de cada uno de sus dígitos.
Ejemplo: el número 13, es preciso pues tiene 2 cifras, y 22 = 4
Ahora la suma de sus cifras es: 1+3 = 4. Como la suma de sus cifras es igual a la cantidad de cifras elevada al cuadrado este es un
número preciso.
Realizar las siguientes funciones:
 Función cuadrado: que recibe el número y devuelve el cuadrado de la cantidad de cifras que tiene
 Función suma: que recibe el número y suma las cifras del número
 Función preciso: retorna 1 si el numero recibido como parámetro es preciso o 0 si no es preciso
 Función main que lista cada uno de los números precisos que existen hasta el 5000.
184-El gobierno nacional ha encargado a la empresa Arbolizadora de Colombia SA. La tarea de planear la arborización de un
número indeterminado hectáreas ubicadas en el departamento Norte de Santander.
Para este proceso se está seleccionando la especie de árbol a sembrar, para cada especie se describe la cantidad de árboles que se
pueden sembrar por cada 10m2 y el costo según la siguiente tabla:
Id Especie Cantidad por 10 m2 Costo C/U
1 Cedro 4 30000
2 Roble 6 27000
3 Pino 9 18000
4 Eucalipto 7 11000
De acuerdo a la cantidad de arboles que se puedan sembrar se presenta un descuento en el costo, si la cantidad es par se da un
descuento del 10%, si es impar no se da descuento.
Una hectárea equivale a 10000 m2
Realice las siguientes funciones:
 Función espar, recibe un número cualquiera y retorna 1 si es par, o si es impar.
 Función hectareaametros, recibe un número que representa la cantidad de hectáreas y retorna la cantidad de metros.
 Función cantidadarboles, recibe el Id de una especie de árboles y la cantidad de metros cuadrados, y retorna la cantidad
de arboles que se pueden sembrar.
 Función costoarboles, recibe el Id de una especie de árboles, la cantidad de árboles que se pueden sembrar de esta, y
retorna el costo de sembrar el total de árboles de esa especie (implementa la función espar para la aplicación del
descuento).
 Función main, Solicita la cantidad de hectáreas al usuario. Llama a las funciones hectareaametros, cantidadarboles y
costoarboles. Imprime en pantalla los siguientes datos: Especie – cantidad árboles – costo total. Por cada una de las
especies de árboles.
Universidad de Pamplona 48
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

6 Resumen de notaciones de las estructuras de control

Lineales o secuenciales Entrada de datos


Salida de datos
Asignación

Estructuras de control No Lineales De selección o condicionales

Para
Repetitivas Mientras que
Hacer mientras

Estructuras de control
Nombre Diagrama de flujo Seudocódigo En C
Entrada o captura de datos
Leer b scanf ( “%d”, &b );
b

Salida o impresión de datos


Imprimir a printf (“cadena de formateo ”, a );
a

Asignación
a=b+c a=b+c;
a = b+c

Si condición entonces if ( condición ) {


no si ....Instrucciones para
Condición ....cuando la condición ....Instrucciones en c para
....sea verdadera ....cuando la condición
....sea verdadera
Sino } else {
....Instrucciones para
....cuando la condición ....Instrucciones en c para
....sea falsa ....cuando la condición
....sea falsa
Fin si };
Universidad de Pamplona 49
Facultad de Ingenierías y Arquitectura
Guía del Estudiante para Programación I – Segundo semestre 2010
---------------------------------------------------------------------------------------------------------------------------------------

Estructura repetitiva
Para
Para i=1 hasta n inc 1 haga for ( i =1 ; i<=n ; i=i+1 ){
i=1; n ; 1
..... Instrucciones a repetir ..... Instrucciones a repetir

fin para };

Estructura repetitiva
Mientras que
MQ condición haga while ( condición ) {
no
Condición
..... Instrucciones a repetir ..... Instrucciones a repetir
si
fin MQ };

Estructura repetitiva
Hacer Mientras
Hacer Do {

..... Instrucciones a repetir ..... Instrucciones a repetir

MQ condición } while ( condición );

si
Condición

no

También podría gustarte