CÁTEDRA: LABORATORIO II
Fecha de Inicio: 19/09/2011
Taller 2 Fecha de presentación. Semana del 3 de octubre (en clase de práctica). Objetivos. Que el alumno demuestre conocimientos en el Lenguaje C y logre: Afianzar conceptos básicos introducidos en el Taller 1 Aplicar arreglos multidimensionales en la resolución de problemas lógicos. Resolver planteamientos utilizando modularidad. Comprender y aplicar funciones de la biblioteca string.h. Realizar el desarrollo y la verificación de programas eficazmente. Consignas. 1. Este trabajo debe realizarse en forma individual, y consiste en dos etapas, la primera etapa es domiciliaria y se llevará a cabo con una duración de tres semanas, la segunda etapa es presencial y consistirá en una evaluación en pc con una duración máxima de dos horas. 2. La presentación de la primera etapa consistirá en el material abrochado contando con los siguientes ítems: 2.1. Carátula. Identificación completa del trabajo evaluativo con el nombre del alumno que realizó el trabajo. 2.2. El diagrama de flujo estructurado de cada uno de los programas 2.3. Una planilla de pruebas de escritorio conteniendo las entradas ingresadas, los resultados esperados, los resultados obtenidos. 2.4. El código impreso de cada uno de los programas. El código de cada programa deberá cumplir con las siguientes condiciones: 2.4.1. Deberá contar con un encabezado identificatorio con el nombre del alumno que lo desarrolló. 2.4.2. Deberá utilizarse sangría. 2.4.3. Deberán indicarse todos los comentarios y notas que se consideren precisas para la mejor comprensión del código desarrollado 3. El día de la presentación de la primera etapa el alumno deberá resolver planteamientos mediante la programación de un módulo cuya descripción le será indicada en ese momento. Para tal fin contará con 2 (dos) horas reloj para completar la segunda etapa de este taller. 4. Finalizada la segunda etapa el alumno deberá entregar el código desarrollado en la primera etapa y el código desarrollado en la etapa presencial. Los códigos fuentes deberán estar identificados con el apellido o con parte del apellido del alumno y los números 1 y 2 respectivamente. 5. Los códigos fuentes entregados deberán contar con nombre apropiado, según punto previo, y con la extensión correspondiente a un programa en Lenguaje C (.c). Criterios de evaluación y aprobación. Para aprobar el Taller se debe cumplir con los siguientes ítems: 1. Los códigos de los programas, tanto de la primera como de la segunda etapa, deben estar totalmente desarrollados. 2. Los programas deben ejecutarse sin que se generen errores en tiempo de ejecución, y con las correspondientes verificaciones de entrada de datos. 3. La implementación deberá realizarse aplicando funciones definidas por el usuario, funciones de la biblioteca string.h, y arreglos unidimensionales y bidimensionales. 4. Los programas deberán funcionar adecuadamente a la solicitud propuesta, tanto en la primera etapa como en la segunda etapa del Taller. 5. La carpeta descripta en el punto 2 de Consignas, deberá presentarse en tiempo y forma. 6. La/s resolución/es del/los problema/s deberán realizarse aplicando las indicaciones, métodos y consideraciones propuestas por la cátedra. 7. El alumno cuya entrega de la etapa 1 no cumpla con las condiciones solicitadas no podrá aprobar la evaluación, aun cuando desarrolle correctamente la etapa 2.
CÁTEDRA: LABORATORIO II
Fecha de Inicio: 19/09/2011
Taller 2 Enunciados 1. Diseñar un programa principal que ingrese un valor n desde el teclado, convoque a una función para calcular los N primeros términos de Fibonacci y muestre los resultados en la pantalla. El programa finalizará cuando se introduzca un valor negativo. 2. Escribir una función int palindromo(char * nom); que dada la dirección de una cadena de caracteres indique si es un palíndromo: Se lee igual hacia delante que hacia atrás. Por ejemplo: “Dábale arroz a la zorra el abad” Nota: deben ignorarse los acentos, los espacios en blanco y las diferencias entre mayúsculas y minúsculas. La función devolverá 1 si la cadena es un palíndromo y 0 si no lo fuera. 3. Dada la entrada de una matriz A de NxN elementos, realizar las siguientes tareas utilizando funciones: 3.a) Mostrar los elementos impares que se encuentren en la triangular superior. void muestraImpares(int x[][]); donde x es el parámetro de entrada que recibe a la matriz A. 3.b) Ingresar un número y determinar si este se encuentra en la triangular inferior. int busca(int x[][], int a); donde x recibe la matriz A, y a recibe el numero a buscar. 4. Dada una matriz A de NxM de números enteros. Construya un módulo que permita ordenar el contenido de la matriz en forma ascendente por cualquier columna X ingresada por teclado. Para esto deberá convocar a una función void intercambio(int *a, int *b), en donde los punteros a y b reciben las direcciones de las celdas de la matriz que deben intercambiarse. 5. El Servicio Meteorológico Nacional tiene almacenadas en una matriz T(10 x13) las máximas temperaturas mensuales de los últimos 10 años.
2001
36
30
35
...
27
38
40
2002
37
29
33
...
29
33
36
2003
28
30
31
...
25
36
40
2004
30
33
30
...
22
37
39
2005
37
35
30
...
26
37
39
2006
41
36
35
...
26
39
38
2007
39
37
34
...
29
40
36
2008
38
39
34
...
30
41
37
2009
40
30
37
...
33
37
37
2010
42
40
29
...
35
38
41
2011
43
30
28
...
30
39
42
Se pide: a. Ingresar una Temperatura y mostrar la cantidad de veces que esta aparece en el segundo trimestre de estos 10 años. Este cálculo deberá realizarse en una función convocada. b. Generar una matriz M(10 x 2), que contenga el año y el promedio de temperaturas máximas de cada uno de los años. Para realizar esta tarea deberá convocar a una función void
CÁTEDRA: LABORATORIO II
Fecha de Inicio: 19/09/2011
Taller 2 promedio(int m[10][2], int *p) que recorra la fila y devuelva el promedio en la variable apuntada por el puntero p. 6. Una empresa que comercializa teléfonos celulares almacena en la matriz Stock(N x 5) la siguiente información: N° Serie
Empresa Marca Modelo Precio Estad o
123946
1
1
888
2400
1
215748
2
1
888
1000
1
545567
2
1
555
750
1
578482
4
1
666
700
1
898422
3
2
333
250
1
275413
1
3
444
1149
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
En donde los valores de las columnas Empresa y Marca indican: Empresas:
Marcas:
1-Ninguna (Liberado)
1-Nokia
2-Personal
2-Motorola
3- Movistar
3-Samsung
4- Claro
4-Otra
El valor de la columna Estado podrá ser 1 o 0, un producto con el Estado en 1 está activo y listo para su venta, mientras que un producto con su Estado en 0 se encuentra sin existencia en el stock de la empresa. Desarrolle un programa que mediante un menú de opciones permita realizar las tareas indicadas a continuación: a. Dado un N° de serie registrar una operación de Venta, esto implica que se deberá cambiar el estado del producto en la matriz Stock y generar la matriz VENTAS, con los siguientes datos: N° de serie, Precio y fecha (día y mes ingresado al comienzo de la ejecución). b. Para todos los Liberados calcular el monto esperado de ganancia. c. Informar los N° de serie de los que pertenecen a la empresa Movistar, superiores al precio promedio de dicha empresa. 7. La Empresa de Seguridad “Santiago Seguridad” tiene un plantel de 6 (seis) vendedores, los cuales ofrecen los 3 (tres) tipos de monitoreos que brinda la empresa. Cada uno de los vendedores tiene objetivos a alcanzar. Este registro diario se realiza en la matriz VENTAS DIARIAS de 31 x 24 elementos:
CÁTEDRA: LABORATORIO II
Fecha de Inicio: 19/09/2011
Taller 2 Tipo de Monitoreo que brinda la empresa
Objetivos Mensuales
Monitoreo 1
25
Monitoreo 2
15
Monitoreo 3
10
VENTAS DIARIAS (31,24) Cod. T.M. T.M. T.M. Cod. T.M.
Cod.
T.M. T.M. T.M.
Vend
1
2
3
Vend
1
Vend
1
2
3
10
5
1
1
20
3
...
60
1
2
0
10
2
0
2
20
4
...
60
0
1
1
10
0
1
2
20
1
...
60
5
3
1
...
...
...
...
...
...
...
...
...
...
...
VENTAS MENSUALES(6, 4) Cod.
Vta. Men
Vta. Men
Vta. Men
1
2
3
10
20
16
3
20
10
15
15
...
...
...
60
25
10
Vend
8
Identifique y desarrolle las funciones requeridas para resolver los siguientes ítems: 7.a) Generar a partir de la matriz VENTAS DIARIAS la matriz VENTAS MENSUALES la cual contendrá para cada línea el total de cada tipo de monitoreo, discriminado por vendedor. 7.b) Para un día leído mostrar el vendedor que más vendió computando los 3 tipos de monitoreos. 7.c) Mostrar el o los vendedores que alcanzaron el objetivo mensual del tipo de monitoreo 1.
Recursos: a) Bibliograficos: Lenguaje C. Kernighan & Ritchie. Prentice – Hall. Hispanoamericana S.A Como programar en C/C++ 2º Edición. Deitel Harvey Osborne/MacGraw Hill. Interamericana España. S.A. Manual de Borland C++.
Pappas Chris & Murray William. Osborne/MacGraw Hill. Interamericana España. S.A. b) Software BloodShedSoftware. Dev C++. wxDev-C++. Entorno de desarrollo integrado libre basado en el popular DevC++, adecuado para quienes trabajen sobre Win7 o WinVista.