Práctica 2c: Principios básicos de Algoritmia: Bifurcaciones y bucles en Lenguaje C. Objetivos En esta práctica el objetivo principal es el de poner en práctica los principios básicos de la algoritmia. Para ello el alumno deberá conocer las diferentes estructuras para el control del flujo de un programa: bifurcaciones (operaciones condicionales) y bucles (operaciones iterativas). Evaluación La práctica consta de 3 cuestiones, de los cuales habrá que realizar correctamente al menos 1 para aprobar la práctica. Procedimiento Cada cuestión consta de un enunciado y de una plantilla en lenguaje C. El alumno usará dicha plantilla para verificar el correcto funcionamiento de algoritmo que haya diseñado y su implementación en lenguaje C. En la plantilla se indica dónde debe el alumno insertar su código. Este mismo código deberá copiarse y enviarse a través del servidor de docencia teniendo especial cuidado de seleccionar correctamente la línea de inserción en función del ejercicio que esté resolviendo. Entrega de la práctica a través del servidor Los resultados de todas la práctica se entregará usando Goodle GMS. Para el correcto funcionamiento de las siguientes páginas su navegador debe permitir cookies y la ejecución de javascript. Goodle se encuentra situado en la siguiente dirección: http://bono.us.es/sdocencia/ La entrega de la práctica consiste en copiar el código desarrollador en cada cuestión en el cuadro de respuestas correspondiente de Goodle. Hay que copiar el código una vez se haya comprobado el correcto funcionamiento del programa. IMPORTANTE: • Cada ejercicio se debe resolver utilizando únicamente las variables definidas en el molde que se proporciona • Debe respetar la estructura que se le propone sin cambiar nombres de variables ni omitir ninguna línea de código. 1 Ejercicio 227 Una sucesión geométrica está constituida por una secuencia de elementos en la que cada uno de ellos se obtiene multiplicando el anterior por una constante denominada razón o factor de la progresión. Se suele reservar el término progresión cuando la secuencia tiene una cantidad finita de términos mientras que se usa sucesión cuando hay una cantidad infinita de términos, si bien, esta distinción no es estricta. Así, 5,15, 45, 135, 405 es una progresión geométrica con razón igual a 3, porque 15 = 5 × 3, 45 = 15 × 3, 135 = 45 × 3, 405 = 135 × 3, y así sucesivamente. . Realice un programa en lenguaje C que calcule y muestre por pantalla el término n-ésimo de una progresión geométrica, dados el primer término de la sucesión a0 y la razón r. void main(void) { /* DECLARACIÓN DE VARIABLES (véase tabla de objetos) */ int a0; int n; int r; int i; int an=-1; /* LECTURA DE DATOS */ printf("Introduzca el primer numero de la progresion geometrica:"); scanf("%d",&a0); printf("Introduzca la razon de la progresion:"); scanf("%d",&r); printf("Introduzca la posicion del termino que desea obtener:"); scanf("%d",&n); /*************INICIO CÓDIGO DE ALUMNO*****************/ /***************FIN CÓDIGO DE ALUMNO******************/ /* ESCRITURA DE RESULTADOS */ if(n<0) { printf("Entrada no valida"); } else { printf("El termino %d de la progresion geometrica es %d",n,an); } /* BLOQUEO DE PANTALLA*/ printf("\n"); system("pause"); } 2 Ejercicio 217 El concepto fundamental de la sucesión de Fibonacci es que cada elemento es la suma de los dos anteriores. La sucesión inicia con 1 y 1, y a partir de ahí cada elemento es la suma de los dos anteriores. De esta forma, la sucesión de Fibonacci es la siguiente sucesión infinita de números naturales: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144… A cada elemento de esta sucesión se le llama número de Fibonacci. Por otro lado, si se generaliza esta sucesión y se toma como primer elemento 2 y segundo elemento, el valor 1, se obtiene la sucesión de Lucas, dada por: 2, 1, 3, 4, 7, 11, 18… Formalmente, se describe como: • • • para Realice un programa en lenguaje C que calcule el término n-ésimo de la sucesión de Lucas y lo muestre por pantalla. void main(void) { /* DECLARACIÓN DE VARIABLES (véase tabla de objetos) */ int n; int i; int res=-1; int aux1,aux2; /* LECTURA DE DATOS */ printf("Introduzca un numero natural:"); scanf("%d",&n); /*************INICIO CÓDIGO DE ALUMNO*****************/ /***************FIN CÓDIGO DE ALUMNO******************/ /* ESCRITURA DE RESULTADOS */ if(n<0) { printf("Entrada no valida"); } else { printf("El termino %d de la sucesion de Lucas es %d",n,res); } /* BLOQUEO DE PANTALLA*/ printf("\n"); system("pause"); } 3 Ejercicio 221 Un número de Harshad, o número de Niven, es un entero divisible entre la suma de sus dígitos en una base dada. Todos los números entre cero y la base, son números Harshad. Los primeros números de Harshad con más de dos dígitos en base 10 son: 10, 12, 18, 20, 24, 27, 30, 36, 40, 42, 45, 48, 50, 54, 60, 63, 70, 72, 80, 81, 84, 90, 100, 102, 108, 110, 111, 112, 114, 117, 120, 126, 132, 133, 135, 140, 144, 150, 152, 153, 156, 162, 171, 180, 190, 192, 195, 198, 200, 201 y 204. Realice un programa en lenguaje C que calcule si un número entero dado, en base 10 es un número Harshad o no. #include<stdio.h> void main(void) { int int int int int numero; suma_dig=0; res=-1; aux1; aux2; //Número dado //Suma de los dígitos // Vale 1 si numero es harshad, 0 si No lo es /* LECTURA DE DATOS */ printf("Introduzca un numero natural: "); scanf("%d",&numero); /*************INICIO CÓDIGO DE ALUMNO*****************/ /***************FIN CÓDIGO DE ALUMNO******************/ /* ESCRITURA DE RESULTADOS */ if(res==1) printf("\nEl numero %d es un numero Harshad\n",numero); if(res==0) printf("\nEl numero %d NO es un numero Harshad\n",numero); /* BLOQUEO DE PANTALLA*/ printf("\n"); system ("PAUSE"); } 4