laboratorio 02: ejercicios de programación en...

18
Estructuras de datos (Prof. Edgardo A. Franco) 1 Laboratorio 02: Ejercicios de programación en C Solicitado: Ejercicios 02: Soluciones estructuradas en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom

Upload: dokhue

Post on 17-Mar-2018

225 views

Category:

Documents


5 download

TRANSCRIPT

Estructuras de datos (Prof. Edgardo A. Franco)

1

Laboratorio 02: Ejercicios de programación en C

Solicitado: Ejercicios 02: Soluciones estructuradas en C

M. en C. Edgardo Adrián Franco Martínez http://[email protected]

@edfrancom edgardoadrianfrancom

Contenido• Problema 01• Planteamiento• Diagrama de flujo

• Problema 02• Planteamiento• Diagrama de flujo

• Problema 03• Planteamiento• Pseudocódigo

• Problema 04• Planteamiento• Pseudocódigo

• Simulando el tiempo• Ejercicios 02: Soluciones estructuradas en C

2

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Problema 01

• Se necesita realizar un programa que calcule el sueldoneto de un trabajador, el programa recibirá el sueldo basedel empleado y le descontará el impuesto sobre la rentasegún la siguiente tabla:

Rangos del sueldo base Descuento de impuesto

$0.00 - $1000.00 5% del sueldo base

$1001.00 - $5000.00 15% del sueldo base

>$5000.00 30% del sueldo base

3

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Problema 01 (Diagrama de flujo)

Diagrama de flujo que da solución al problema 01

4

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Problema 02

• Dados tres números enteros de entrada a, b y c,mostrarlos a la salida ordenados de forma descendente.

• E.g. si la entrada es:• a=6, b=5, y c=90;

• La salida será: 90, 6, 5.

• E.g. si la entrada es:• a=60, b=50, y c=9;

• La salida será: 60, 50, 9.

5

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Diagrama de flujo que da solución al problema 02

6

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Problema 03

• Realizar un programa que calcule el cubo de una serie denúmeros positivos introducidos uno a uno, si se introduceun número negativo se deberá terminar el programa.

7

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Problema 03 (Pseudocódigo)

procedimiento Cubo

numero←Entrada()

mientras numero>=0 hacer

cubo=numero*numero*numero

Salida() ←cubo

numero←Entrada()

fin mientras

fin procedimiento

Pseudocódigo que da solución al problema 03

8

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Problema 04

• Realizar un programa que muestre la serie de Fibonaccihasta el termino n, el cual es recibido al inicio y debe sermayor a 2. Al mostrar la serie se deberá mostrar termino atermino a la salida con un retraso de 0.5 segundos.

• Recordar que los dos primeros números de la serie son 0 y 1.El resto se calcula como la suma de los dos númerosinmediatos que le preceden.

• E.g. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

9

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Problema 04 (Pseudocódigo)

procedimiento Fibonaccirepetir

n←Entrada()hasta que (n>2)primero ←0Salida() ←primeroEsperarMedioSegundo()segundo ←1Salida() ←segundoEsperarMedioSegundo()elemento ←3repetir

siguiente ←primero+segundoSalida() ←siguienteEsperarMedioSegundo()primero ←segundosegundo ←siguienteelemento ←elemento+1

hasta que(elemento>n)fin procedimiento

Pseudocódigo que da solución al problema 04

10

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Simulando el tiempo

• El lenguaje ANSI C no incluye librerías estándar confunciones para retrasos de tiempo.

• El compilador MinGW actualmente usado, incluye unalibrería no estándar llamada <windows.h>, esta incluye ala función Sleep, la cual recibe como parámetro el númerode milisegundos que el programa duerme antes decontinuar su ejecución.

• Si se desea obtener los mismo resultados en Linux sedeberá de utilizar la función sleep(), sin la librería<windows.h>.

11

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Simulando el tiempo

• El siguiente código solo funciona bajo Windows ycompilando con MinGW.

• <windows.h> no pertenece a la biblioteca estándar de C.

#include<stdio.h>

#include<windows.h>

int main(void)

{

short i=0;

while(i<100)

{

printf("\n%d",i);

Sleep(500); //Esperar 500 milisegundos

i++;

}

}

12

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Ejercicios 02: Soluciones estructuradas en C

• Problema 01: Escribir un programa que determine si un año esbisiesto. Una año es bisiesto si el múltiplo de 4.• (E.g. 1984. Los años múltiplos de 100 no son bisiestos, salvo si ellos son

también múltiplos de 400 (2000 es bisiesto, 1800 no lo es).

• Problema 02: Realizar un programa que convierta una cantidad demetros dada en su equivalente en Pies, Yardas y Millas.

• Problema 03: Realizar un programa, que calcule la máxima áreade un terreno rectangular de lados 100-2x y x respectivamente,para valores de x entre 10 y 300.

• Problema 04: Realizar un programa que reciba un número desegundos mayor a 30 y menor a 120, durante el número desegundos dado el programa estará mostrando la palabra "hola"cada 2 segundos, mostrando la palabra "soñando" cada 3segundos y mostrando los segundos restantes cada 5 segundos.

13

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Problema 05: Realizar un temporizador capaz de recibir al iniciominutos, segundos y centésimas de segundo, una vez dados estosvalores deberá de mostrarse en pantalla su valor hasta llegar acero. Al llegar a cero deberá mostrar el mensaje “fin del tiempo”así como sonar una alarma que indique que se a acabado eltiempo y posteriormente terminará su ejecución.

• Problema 06: Realizar un programa que convierta un númerodado de segundos en el equivalente de minutos y segundos.

• Problema 07: Realizar un programa para calcular la longitud de lacircunferencia y el área de un círculo, para un radio introducido.

• Problema 08: Realizar un programa que obtenga 100 términos deuna serie numérica de dos en dos a partir de un número dado;deberá de haber un tiempo de retraso de 1 segundo entre cadanumero de la serie a la salida.

• Problema 09: Realizar un programa que imprima la suma de los100 primeros números a partir de un número dado.

14

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

15

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Problema 10: Realizar un programa que reciba un número entero mayora 0 y menor a 10. El número recibido, será el número de minutos que sedeberá contar en forma regresiva hasta llegar a 0 segundos, se debemostrar en todo momento los minutos y segundos faltantes para llegar acero. Finalmente cuando el contador regresivo llegue a cero segundos, sedebe mostrar el mensaje “Se terminó el tiempo”.

• Problema 11: Realizar un programa que calcule el factorial de un númerodado.

• Problema 12 Realizar un programa para calcular la suma de los númerosprimos menores o iguales a un numero dado.

• Problema 13: Realizar un programa para calcular los grados °F y °R apartir de un número de °C dado.

• Problema 14: Realizar un programa capaz de saludar al usuario unnúmero de veces dado.

• Problema 15: Realizar un programa capaz de mostrar la serie 1, 1, 2, 4, 7,11, 18, 36, 65,..., … hasta un elemento n dado.

Los dos primeros términos son arbitrarios (el segundo impar). A partir del tercero, si el término anterior esimpar, se obtiene sumando los dos términos anteriores; si es par, sumando los tres términos anteriores.

16

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Problema 16: Realizar un programa que reciba un número x a partir del cualcalcula: σ𝑖=𝑥

𝑥+10 𝑖2.

• Problema 17: Realizar un programa que al recibir un número decimal obtengasu representación en hexadecimal.

• Problema 18: Realizar un programa que al recibir un número decimal obtengasu representación en binario.

• Problema 19: Realizar un programa capaz de recibir un número y determinarsi este es primo no.

• Problema 20: Realizar un programa capaz de recibir las horas trabajadas deun empleado y la paga por hora para calcular el sueldo semanal de unempleado . Cuando la horas de trabajo exceden de 40 se consideran horasextra; las primeras 8 se pagan al doble; si las horas extra exceden de 8 sepagan las primeras 8 al doble de lo que se pagan las horas normales y el restoal triple.

• Problema 21: Realizar un programa capaz de leer una lista de calificaciones(0.00-10.00) y calcular el promedio, el número de aprobados y el número dereprobados; el final de la lista de calificaciones será si se introduce un númeromenor a cero.os términos son arbitrarios (el segundo impar). A partir del tercero, si eltérmino anterior es impar, se obtiene sumando los dos términos anteriores; si es par,sumando los tres términos anteriores.

17

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Problema 22: Realizar un programa que muestre la multiplicaciónde los dos números mayores de una serie de números positivos,suponiendo que los datos se leen uno a uno. Un valor de cerocomo entrada indicará que se ha alcanzado el final de la serie denúmeros positivos.

• Problema 23: Realizar un programa que calcule la distancia entredos puntos de un plano 2D.

• Problema 24: Realizar un programa que calcule la distancia entredos puntos de un plano 3D.

• Problema 25: Se necesita crear un programa que le permita a unamáquina expendedora devolver el cambio con las 3denominaciones de monedas posibles con las que cuenta. Al iniciodel programa se deberán las cantidades de monedas que tiene de$10, $5, $2 y $1. Posteriormente el programa estará recibiendo elcambio a devolver hasta que se llegue a un Error.• Si el cambio a devolver no se puede completar se deberá de mostrar

como salida “Error” y el programa termina.Los dos primeros términos son arbitrarios (el segundo impar). A partir del tercero, si el términoanterior es impar, se obtiene sumando los dos términos anteriores; si es par, sumando los trestérminos anteriores.

Ejercicios 02: Soluciones estructuradas en C

• Realizar para cada uno de los problemas anteriores una solución estructurada,construyendo su diagrama de flujo y pseudocódigo, finalmente codifique susolución en un programa debidamente documentado en lenguaje C.

• Observaciones

1. Reportar el texto del ejercicio, su algoritmo en diagrama de flujo y pseudocódigo,el código en C (con colores) y las pruebas de sus programas.

2. Incluir al reporte las capturas de pantalla y explicaciones de funcionamiento decada programa construido.

3. El reporte es individual y tiene portada, índice y encabezados de pagina connúmero de pagina , titulo y nombre del alumno.

4. Enviar vía Web en un archivo comprimido (ZIP, RAR o TAR), reporte y códigos deC de cada problema.

*Se entregará antes del día Miércoles 30 de Marzo de 2016 (23:59:59 hora limite).

Grupo Contraseña

1CV8 algoritmia1cv8 18

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

2: E

jerc

icio

s d

e p

rogr

amac

ión

en

CP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez