A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

Documentos relacionados
Ejercicios Tema 6. Funciones

Cadenas de caracteres

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

GUÍA DE LABORATORIO #3 ESTRUCTURAS ALGORÍTMICAS CONDICIONALES SIMPLES, DOBLES Y MÚLTIPLES

Métodos CON valor de retorno

FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )

BOLETÍN 5: Algoritmos II

Estructuras de Repetición (Repita para)

Funciones Definición de función

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

1. Escriba el siguiente código, compílelo y ejecútelo. Obtiene el resultado esperado? Modifíquelo para que se comporte como debe:

Tipos de datos y Operadores Básicos

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

for(i = 0; i <= 45; i+=5) { x = (i*3.1416)/180; printf( seno(%d) = %f\n,i,seno(x));

Tema: Funciones, Procedimientos y Recursividad en C#.

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

GUIA DE EJERCICICIOS. 1.- Escribir un algoritmo que lea cuatro números e indique cual es el mayor

funciones printf scanf

Estructuración del programa en partes más pequeñas y sencillas

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

UNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP

Programación en Lenguaje C

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

Trabajo Práctico 5 Estructura Repetitiva

Ejercicios aplicando estructuras de asignación.

Lenguaje de programación C. Introducción

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

Tema: Funciones, Procedimientos y Recursividad en C#.

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Preparación para Álgebra 1 de Escuela Superior

Recursividad Definición

Introducción a la Programación

Programación. Test Autoevaluación Tema 3

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

SESIÓN DE EJERCICIOS E1

Realiza el algoritmo de cada situación problemática y el programa en lenguaje C correspondiente.

Programación I Recursividad.

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación MODULAR: Subalgoritmos - funciones y procedimientos

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

Informática I (2014-2) Taller Lenguaje C Prof. Sebastián Isaza Departamento de Ingeniería Electrónica Facultad de Ingeniería Universidad de Antioquia

Problema No.7. Elaborar un programa en C++ que lea una temperatura en grados Fahrenheit y muestre su equivalente en grados Celsius, Kelvin y Rankine.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

a) Si ch tiene el valor X y numero el valor 5, cuál sería el efecto de ejecutar cada una de las siguientes llamadas al procedimiento:

Expresiones Aritméticas

Actividad colaborativa Ejercicios de programación Programación básica C++

ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/

Lenguaje C, tercer bloque: Funciones

5. ESTRUCTURAS DE REPETICIÓN

Estructuras de Repetición

Operadores aritméticos

Variables y tipos básicos 1. Definir una variable de tipo char. Convertirla a una variable de tipo entera e imprimir su valor asociado.

Cuales son los tipos de instrucciones que se utilizan en la programación?

Entrada de datos y salida de resultados.

PRÁCTICA # 2. 0 Direcciones 1 Dirección 2 Direcciones 3 Direcciones

Cuestiones: Ejercicios 2: 1) Qué imprimen los siguientes bucles?

EJERCICIOS ALGORITMOS

INTRODUCCIÓN A LA MATEMÁTICA FI- NANCIERA

Funciones: Pasos por Referencia Recursividad

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO INGENIERÍA EN COMPUTACIÓN

Autoestudio 2: Variables y Operadores

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

Primaria Sexto Grado Matemáticas (con QuickTables)

Capitulo 2. Programación Modular

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

Resumen anual de Matemática 1ª Convocatoria: jueves 24 de noviembre, 2016 Octavo nivel 2ª Convocatoria: miércoles 1 de febrero, 2017 broyi.jimdo.

Modularización en lenguaje C. Funciones

Criterios de evaluación. Tema 1. Matemáticas. 5º Primaria

Boletín de ejercicios de la asignatura de INFORMÁTICA para la realización de las prácticas de laboratorio. Ejercicios de Estructuras de Control

Algoritmos y Estructura de datos:

2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas

SESIÓN DE EJERCICIOS E1

Tema 7: Recursividad

Examen de Fundamentos de la Programación (Modelo 1)

Hoja de ejercicios del Tema 3

Estructuras de Decisión Simples y Dobles

Ejercicios sobre recursividad

Bloque 1. Conceptos y técnicas básicas en programación

UNIVERSIDAD TECNOLÓGICA DE LOS ANDES INGENIERÍA DE SISTEMAS E INFORMÁTICA ALGORITMOS Y ESTRUCTURAS DE DATOS

Elementos de un programa en C

Tema 18: Memoria dinámica y su uso en C

GUIÓN DE PRÁCTICAS 3: ESTRUCTURAS CONDICIONALES

Introducción a la programación: Algoritmos

Programación I Teoría II.

Estructuras de Repetición (Hacer-Mientras)

INICIACIÓN A LA PROGRAMACIÓN EN C

OPERADORES Y EXPRESIONES

PROBLEMAS DEL TEMA 7 SUBPROGRAMAS Y MODULARIDAD

Programación Estructurada

UNTELS Estructuras Selectivas (Sin anidar) Estructuras condicionales

Tipos de Datos en C. Palabras reservadas en C

EJEMPLOS Y EJERCICIOS

GUIA DE EJERCICIOS N 1 LENGUAJE C# Página 1 de 5. Instructor: Ing. Néstor Raúl Suarez Perpiñan

D L M M J V S

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES

Transcripción:

Trabajo práctico Nº 3 ( Resolución de problemas Funciones Punteros - Recursividad). Realiza el algoritmo de cada situación problemática y el programa en lenguaje C correspondiente. Funciones 1- Escriba una declaración de una función llamada number() que toma un solo argumento entero y no devuelve ningún dato al programa que llama. 2- Qué tipo de valor las funciones siguientes devuelven? a- int print_error(flota err_nbr); b- long read_rec.( int rec_nbr, int size); 3- Escribe una llamada apropiada para cada una de las siguientes funciones: a. float formula (float x) float y; y = 3 * x - 1; return(y); b. void escribe (int a, int b) int c; c = sqrt (a * a + b * b); printf ( c = %d\n, c); 4- Qué es incorrecto en la definición de la función siguiente? int hola (int y); return (2*y); 5- Escriba una función que reciba dos números como argumentos y devuelva el valor de su producto. 6- Declarar una función denominada SIGN para determinar el signo de un número real. (Se debe obtener +, -, y blanco para cero (0)). 7- Un asilo factura a sus pacientes de acuerdo a su sexo y edad. El importe facturado a un hombre es de $70 por semana si su edad supera los 70 años y un extra de $20 si pasa de 75 años; si es mujer se le factura $45 por semana si la edad pasa de 60 con un extra de $25 si pasa de 65 años. Escribir un programa que lea el sexo ( F o M ) y la edad de una persona e imprima cuanto debe abonar al cabo de P semanas. Si la edad de las personas está por debajo de las consideradas debe imprimirse un mensaje de error. Utilizar funciones como crea conveniente. 8- Escribir un programa que utilizando una función 1

f(x) = x^3-9 x^2 + 5 e imprima una tabla con los siguientes valores de x: 1.5, 2.0, 2..5,...7.0. Siendo x parámetro de entrada de la función. 9- Escribir un programa que lea un conjunto de ternas hasta la terna (0,0,0) y para cada uno determine mediante una función tipo booleana (que devuelva 0 o 1) si los tres valores son iguales. Por fin de proceso mostrar la cantidad de ternas que hicieron verdadera la función. 10- Escribir una función POLIN que reciba dos valores: a (un valor real) y n (grado del polinomio), lea los coeficientes del polinomio completo y ordenado en forma decreciente y calcule P(a). 11- Diseñar una función para imprimir 6 líneas del triángulo de Floyd. 1 2 3 4 5 6 7 8 9 10... 12- Escribir y ejecutar una función que invierta los dígitos de un número entero dado. 13- Escribir un programa que me permita ingresar dos números enteros y a través de un menú poder seleccionar una de las operaciones a realizar con los números ingresados. El menú que debe aparecer por pantalla es el siguiente: MENU ********************************* 1: suma 2: resta 3: multiplicación 4: división 5: potencia de 2 6: raíz cuadrada. 7: Salir *********************************** Elija una opción: Utilizar color para mostrar el menú. Cada una de las operaciones debe ir a una función específica. El programa me debe permitir dar entrada tantas veces como quiera el usuario, el proceso termina cuando se elige la opción 7. Se debe mostrar cada resultado. 14- Declarar una función g(x,n) = x- x^2 + x^3 - x^4 +...+ x^n (n-1)! siendo x un número real y n entero 1<=n<=20, ambos parámetros de la función. Mostar cada valor obtenido en la función. 2

15- Escribir una función que reciba tres argumentos numéricos, que serán interpretados como límite inferior, límite superior e incremento de una serie de iteraciones. Imprimir la sucesión de enteros comprendidos entre ambos límites, de incremento en incremento. Controlar que el usuario ingrese los tres argumentos requeridos mayores a 0, abortando con un mensaje de error en caso contrario. 16- Escriba una función que despliegue en el margen izquierdo de la pantalla un cuadrado sólido de un determinado carácter especificado en el parámetro caracterllenado y cuyas medidas se especifican mediante el parámetro lado. Por ejemplo, si lado es igual a 4 y caracterllenado es #, entonces esta función debe imprimir: # # # # # # # # # # # # # # # # 17- La computadora juega un rol muy importante en la educación. Escriba un programa que ayude a cualquier estudiante de primaria a aprender a multiplicar. Utilice rand para producir dos enteros positivos de dos dígitos. Después, debe escribir una pregunta como ésta: Cuánto es 6 por 7? Entonces, el estudiante escribe la respuesta. El programa verifica la respuesta. Si es correcta, imprime Muy bien!! y hace otra pregunta, y si no imprime No, sigue intentando, lo que permite al estudiante intentar la misma pregunta de manera repetida hasta contestar correctamente. Además se pide contar las respuestas correctas e incorrectas del estudiante. Después de contestar 10 preguntas, su programa debe calcular el porcentaje de respuestas correctas. Si el porcentaje es menor que 75 por ciento, su programa debe imprimir Por favor, estudia. Y terminar. 18- Escriba una función que convierta una temperatura dada en grados Celsius a grados Fahrenheit. La formula es: F = 9/5 * C + 32 Punteros 1- Para cada uno de los siguientes enunciados, escriba el código correspondiente. Suponer que se han declarado las siguientes variables: float num1 = 3.1415926, num2 = 0.12345; (a) Declarar un puntero a float pnum. (b) Asignar la dirección de la variable num1 a pnum. (c) Imprimir el valor de la variable apuntada por pnum. (d) Asignar el valor de la variable apuntada por pnum a la variable num2. (e) Imprimir el valor de num2. (f) Imprimir la dirección de num2 y la dirección almacenada en pnum. Es la misma dirección? 2- Seguir la ejecución del siguiente programa y averiguar lo que saldría por la pantalla. Después, compilar el programa y ejecútalo en un ordenador para comprobar los resultados. 3

// programa de prueba de los pasos de parámetros. # incluye <stdio.h> void dos( int x, int y, int *z); void main() Int a,b,c; a=5; b=8; c=3; dos(a, b,&c); dos(7, a+b+c,&a); dos(a*b, a/b, &c); printf ( \n c=%d,c); getch(); return; void dos(int x, int y, int *z) *z=x+y+*z; printf ( %d %d %d\n, x, y,*z); getch(); return; 3- Escriba un programa que utilice una función para intercambiar dos valores. 4- Se pide desarrollar un programa para llevar el movimiento contable de una empresa. Desarrollar una función movimiento() que acepte como entrada el saldo de la columna Debe y la columna Haber, y las actualice según las siguientes operaciones: Entrada caja- Dinero en efectivo $1200. Pago Gastos administrativos $450. Pago Fletes $50. Cheques $800. La función debe devolver al programa principal los saldos actualizados y determinar el saldo final del balance. 5- Una tienda automatizada dispone de 100 kg. de judías, 100 kg de lentejas y 100 kg de garbanzos. Nuestro programa deberá preguntar qué producto quiere comprar a través de un menú. Después preguntará qué cantidad quiere de ese producto y responde de dos formas distintas; si no hay bastante contesta que no hay esa cantidad, y si hay esa cantidad, pide el precio del producto. Utilizar una función que me permita actualizar y mostrar el stock de los productos y calcular el precio de la comprar para ese cliente. Cuando termine de ingresar los productos que quiera, mostrar el importe a abonar, preguntar con cuánto va a pagar (verificar que sea mayor que el importe a abonar) y calcular el vuelto. Se deben atender N clientes. Nota: Se debe enviar a la función el stock inicial de los productos y regresar stock actualizado e importe a abonar por el cliente. 6- Escriba una función llamada tiempo que tenga un parámetro entero denominado segundos y tres parámetros de referencia denominados horas, min y seg. La función debe convertir el número en segundos a sus equivalentes en horas, minutos y segundos. 4

Recursividad 1- Determine que calculan las siguientes funciones realizando la traza de las mismas: int funcion (int n) if n= =1 return (1); else return (funcion(n-1)+1); int func (int n) if n= =0 return (0); else return (n+func(n-1)); 2- Realizar las funciones recursivas: a) Potencia b) Factorial c) y= 1 x + x 2 / 2 x 3 / 6 + x 4 / 24+ + (-1) n x n / n! 3- El algoritmo de Euclides para encontrar el mcd(máximo común divisor) de dos números enteros positivos (M y N) se pueden definir recursivamente. Algoritmo de Euclides: el mcd de dos enteros es el entero mayor que divide a ambos. M N r1 q1 N r1 r2 q2 r1 r2 r3 q3 Cuando el resto es cero (por ejemplo r3=0) el mcd es el último divisor (en éste caso r2). Donde q i, es el cociente y r i el resto Ejercicios Propuestos 1.- Encuentre el error de cada uno de los siguientes segmentos de programas y explique cómo corregirlos: a) double cubo (float); /*Prototipo de la función*/ cubo (float numero) /* definición de la función*/ return numero=numero*numero; 5

b) double cuadrado ( double numero) double numero; return numero* numero; c) int suma (int n) if (n= = 0) return 0; else return n + suma (n); d) int *numero; printf ( %d\n, *numero); e) int *x, y; x = y; 2.- Escribir una función que compare dos valores y entregue como resultado el símbolo de menor, mayor o igual según el resultado de la comparación del primer valor con el segundo. 3.- Escribir una función que imprima todos los puntos de coordenadas enteras que se encuentran sobre la circunferencia x^2 + y^2=2500. 4.- Escribir la función tangente aprovechando el hecho de que: tangente = sin( )/cos( ) El dato a ingresar son ángulos en grados para calcular dicha función. 5- Calcular el área de figuras geométricas. Para ello mostrar en pantalla un menú de opciones que permita al usuario finalizar la ejecución del programa o escoger el tipo de figura. El programa emplea una función diferente para el calculo del área de cada una de las figuras. Despues de mostrar en la pantalla el área de la figura escogida, o en el caso de que el usuario escoja una opción incorrecta, el programa vuelve a ofrecer el menú de opciones hasta que el usuario escoja finalizar. Menú área del círculo área de un cuadrado área de un rectángulo área de un triángulo finalizar 6- Un censador recopila ciertos datos aplicando encuestas para el últmo Censo Nacional de Población y Vivienda. Diseñe una serie de pantallas que le permita al censor ingresar los datos de N encuestas y como fin del proceso genere un informe con los resultados obtenidos. 6

Cada tarjeta contiene la siguiente información: 1. Nº de censo (automático) 2. sexo 3. edad 4. estado civil (a) soltero, b)casado, c) viudo, d) divorciado) 5. estudio (a) primaria, b)secundaria, c)universitario, d) posgrado) 6. vivienda (a) alquila, b) propia) Informar porcentaje por sexo, estudio y estado de la vivienda sobre el total de encuestas procesadas. Utilizar funciones como crea conveniente. 7- Realizar un programa que calcule el sueldo liquido de un empleado a comisión. Utilizar las siguientes suposiciones. a) Sueldo básico fijo conocido. b) Se debe ingresar el monto de ventas del empleado en el mes. c) La comisión de ventas es: hasta $1000 2 % entre $1000 y $5000 3,5 % entre $5000 y $10000 5 % d) Los descuentos son del 6% sobre el básico + comisión e) Al monto obtenido se le suma 10% de presentismo f) El programa debe mostrar: Sueldo Básico Porcentaje de comisión Total descuento Sueldo liquido El programa debe permitir hacer este cálculo para una cantidad no conocida de empleados. Utilizar en la forma que crea adecuada FUNCIONES. 8- En la escuela de ciencias cada curso está identificado con un número de 4 dígitos. El primer dígito es de código del departamento que dicta el curso y los últimos tres dígitos identifican al curso. Los números de código de departamento son: 1 Biología 2 Química 3 Computación 4 Geología 5 Matemática 6 Física Hacer un programa para que dados los nombres de n estudiantes y su número de identificación imprima: el nombre, el número del curso que realiza y el departamento al cual pertenece. Utilizar funciones como crea conveniente. 9- Se desea determinar cuánto dinero se acumulará en una cuenta en el banco después de n años si se deposita inicialmente una cantidad conocida P, y la cuenta acumula anualmente interés a un tanto por ciento anual r. La respuesta a esta cuestión se puede determinar mediante la bien conocida fórmula F= p (1+ i) n en donde F representa la cantidad futura de dinero e i es la representación decimal del tanto por ciento de interés; esto es, i = r/100. 7

Escribir una función de forma tal que los valores de P, r, n se pasen como parámetros y se devuelva el valor calculado de F. 10- Dada la función cuadrática y=ax 2 +bx+c donde a<>0, b, c son constantes. Escribir una función que encuentre sus raíces reales (cuando existan) utilizando el siguiente prototipo: t_err raiz(double a, double b, double c, double *r1, double *r2); 11- Realizar la función recursiva de la secuencia de números de Fibonacci. 12- Escriba un programa que realice una función recursiva de los polinomios de Legendre. Se pueden calcular mediante las fórmulas: P 0 = 1, P 1 = x, P n = [(2n 1)/n] x P n-1 [(n 1)/n] P n-2 En donde n =2,3,4, y x es un número en coma flotante entre -1 y 1 ( Advertir que los coeficientes de los polinomios son cantidades en coma flotante). Generar los n primeros polinomios. Los valores de n y x deben ser parámetros de entrada. 13- Escriba un programa en C que juegue el juego de adivina un número de la siguiente manera: su programa elige un número que debe adivinar el usuario, seleccionando al azar un número entero en el rango de 1 a 100. Entonces, el programa pide un número y el programa tiene que responder si es el correcto o no. Si la respuesta es incorrecta, el programa debe entrar en un ciclo hasta que finalmente el jugador adivine el número. Su programa debe continuar indicándole al jugador muy abajo o muy arriba, para ayudarlo a acercarse a la respuesta correcta. 14- Ingresar una lista de números fraccionarios positivos, ingresando en cada renglón numerador y denominador como: (utilizar mensajes) INGRESE DATOS NUMERADOR:... DENOMINADOR:... NUMERADOR:... DENOMINADOR:... Construir una función SUMAFRAC y usarlo para hallar la suma de dos fracciones, devolviendo numerador y denominador de la suma. Ejercicios de auto evaluación 1. Responda cada una de las siguientes preguntas: a) A un módulo del programa en C, se le llama. b) Una función se invoca mediante una. c) A una variable que sólo se conoce dentro de la función en la que se definió se le llama. d) La instrucción dentro de una función se utiliza para pasar el valor de una expresión hacia la función que la invoca. e) La palabra reservada se utiliza dentro de una función para indicar que ésta no devuelve valor alguno, o para indicar que la función no contiene parámetros. 8

f) El de un identificador se refiere a la porción del programa en la que se puede utilizar dicho identificador. g) Las tres formas de devolver el control desde la función invocada hasta la función que llama son, y. h) La función se utiliza para producir números aleatorios. i) Una variable definida fuera de cualquier bloque o función es una variable. j) Una función que se invoca a sí misma de manera directa o indirecta es una función. 2. Encuentre el error en cada uno de los fragmentos de programa y explique cómo puede corregir dicho error: a) int g(void) printf( Dentro de la función g\n ); int h (void) printf( Dentro de la función h\n ); b) int suma ( int x, int y) int resultado; resultado = x+y; c) int suma ( int n) if ( n==0) return 0; else n + suma(n-1); d) void f (float a); float a; printf ( %f, a); e) void product (void) int a, b, c, resultado; printf ( introduzca tres enteros ); scanf( %d%d%d, &a, &b, &c); resultado = a*b*c; printf( el resultado es %d, resultado); return resultado; 3. Encuentre el error en cada uno de los fragmentos de programa y explique cómo puede corregir dicho error: a) int *numero; printf( %d\n, *numero); b) int *x, y; x= y; c) float x=19.34; float ptrx= &x; printf( %f\n, ptrx); 4. Dado el siguiente programa: # include <stdio.h> int x=5; 9

void func1() int x=2; x=x*4; void func2(x) x=x+3; void func3() x=x*2; int main() x=x+1; func1(); func2(x); func3(); printf("%i",x); Cuál será la salida por pantalla del mismo? 22 12 9 16 5. Si se declara: float x, *p; Cuál de las siguientes expresiones es correcta? p=&x; Ninguna de las restantes respuestas es correcta x=p*; &x=p; &p=x; 6. Sea el siguiente código void mmm (int ); void main(void) int a,b; mmm ( a); mmm ( b); printf ("%d", a+b); void mmm (int x) scanf ("%d", x); Si se introducen desde el teclado los valores 1 y 2, el resultado en pantalla es un 3. Teniendo en cuenta que algunas de las líneas en blanco pueden no contener nada, indique cuántos símbolos & y * faltan en el código. Faltan dos * y dos & Faltan dos * y tres & 10

No falta nada Faltan tres * y dos & Faltan tres & y ningún * 11