Ejercicios de Recursividad en lenguaje C
Alan Rosas PalaciosTarea8 de Septiembre de 2019
2.106 Palabras (9 Páginas)1.588 Visitas
Unidad Profesional Interdisciplinaria en Ingeniería y Tecnologías Avanzadas[pic 1]
Alumno
Rosas Palacios Alan
Unidad de Aprendizaje: Programación
Profesor
M. en C. Niels Henrik Navarrete Manzanilla
Actividad / Práctica
Practica 3, 2do Parcial
Ciudad de México; a 17 de octubre de 2018.
INTRODUCCIÓN |
La recursividad es la capacidad de una función para llamarse así misma, esta forma de programar nos ayuda a crear bucles que modifiquen nuestra función para así crear programas más dinámicos.
Las librerías o archivos de extensión .h nos ayudan a reciclar código. En ellas podemos crear funciones que podamos llamar en programas principales .c , además de poder ser llamadas en varios programas .c.
DESARROLLO |
Descripción
Escriba una función recursiva que ordene de menor a mayor un arreglo de enteros basándose en la siguiente idea: coloque el elemento más pequeño en la primera ubicación, y luego ordene el resto del arreglo con una llamada recursiva.
Análisis
Para crear este código haremos uso de arreglos, funciones y librerías. Crearemos una librería .h donde crearemos la función que nos evalué los valores dentro de un arreglo para saber cuales son mayores y cuales son menores y de esta forma ordenarlos de menor a mayor. Des pues crearemos un programa principal .c donde llamaremos a la librería que creamos para poder usar sus funciones dentro de este programa.
Requerimientos Funcionales
Usar recursividad.
Usar arreglos.
Crear una librería.
Ordenar números de menor a mayor.
Requerimientos no Funcionales
Eficaz.
Eficiente.
Estar programado en lenguaje c.
Código entendible.
Diagramas
[pic 2]
Código
Algoritmo |
|
Código |
Programa |
#include #include #include "ordenamiento.h" int main(){ int numero,i; int arreglo[50]; printf("ingresa la cantidad de elementos a ordenar\n"); scanf("%d",&numero); printf("ingresa valor por valor:\n"); for( i=0; i scanf("%d",&arreglo[i]); }
ordenar(arreglo,numero);
for(i=0; i printf("%d ",arreglo[i]); }
return 0; system("PAUSE"); } |
Cabecera “ordenamiento.h” |
void ordenar (int arreglo[],int numero){ int comparar=numero; int menor=1,i,j; int aux;
if(comparar!=0){
for( i=0; i menor=1; for(j= 0; j if(arreglo[j]>arreglo[j+1]){ menor=1; aux=arreglo[j]; arreglo[j]=arreglo[j+1]; arreglo[j+1]=aux; }
} } comparar--;
} else{
ordenar(arreglo,numero); } } |
Resultados
[pic 3]
Descripción
a. Programe un método recursivo que transforme un número entero positivo a notación binaria.
b. Programe un método recursivo que transforme un número expresado en notación binaria a un número entero.
Análisis
Para resolver este problema necesitaremos crear dos programas principales, uno que sirva para convertir un numero de entero a binario y otro que convierta un numero binario a entero. Además, ocuparemos un archivo .h que contenga las funciones que convierten de enteros a binarios y viceversa, de esta forma podemos llamarlas desde nuestros programas principales, obteniendo el resultado deseado.
Requerimientos Funcionales
Usar recursividad.
Crear dos programas.
Crear una cabecera o librería.
Hacer uso de arreglos.
Convertir números enteros a binarios.
Convertir números binarios a enteros.
Requerimientos no Funcionales
Eficaz.
Eficiente.
Estar programado en lenguaje c.
Código entendible.
Diagramas
Números enteros a binarios.
[pic 4]
Números binarios a enteros.
[pic 5]
Código
Algoritmo |
|
Código |
Programa: Números Enteros a Binarios |
#include #include "enteros.h" int main(){ int numero;
do{ printf("Digite un numero: "); scanf("%i",&numero); }while(numero<0);
binario(numero);
return 0; } |
Programa: Números Binarios a Enteros |
#include #include #include "binario.h" int main() { long long n; printf("Convertir Bianarios a Decimal\n"); printf("ingresa el numero entero: "); scanf("%lld", &n); printf("%lld en binario = %d en decimal", n, convertirEntero(n)); return 0; } |
“enteros.h” |
void binario(int n); void binario(int n){ if(n>1) binario(n/2);
printf("%i",n%2);
} |
“binario.h” |
int convertirEntero(long long n); int convertirEntero( long long n) { int decimal = 0, i = 0, remainder; while (n!=0) { remainder = n%10; n /= 10; decimal += remainder*pow(2,i); ++i; } return decimal; } |
...