Vous êtes sur la page 1sur 8

Serie 4

Temas: - Recursividad - Macros o funciones en lnea Recursividad:

1. Por medio de una funcin recursiva calcular la multiplicacin de dos nmeros naturales. Mostrar su resultado.
#include<stdio.h> #include<conio.h> int multi(int a, int b) { if(a==0) return(0); if(b==0) return(0); else return(a+multi(a,(b-1))); } int main() { int a,b,resu=0; printf("Ingrese dos nmeros: \n"); scanf("%d %d",&a,&b); resu=multi(a,b); printf("%d multiplicado por %d es igual a %d \n",a,b,resu); getch(); }

2. Dados dos nmeros naturales n1 y n2 por medio de una funcin recursiva calcular la suma de los nmeros comprendida entre ellos, incluidos los mismos. Mostrar el resultado obtenido.
#include<stdio.h> #include<conio.h> int suma(int n1, int n2) { if(n1==n2) {return(n1);} else {return(n1+suma((n1+1),n2));} } int main() { int a,b,resu=0; printf("Ingrese dos numeros enteros: \n"); scanf("%d %d",&a,&b); if(a<=b) { resu=suma(a,b); printf("La suma de todos los numeros comprendidos en [%d,%d] es igual a %d \n",a,b,resu);

} else { resu=suma(b,a); printf("La suma de todos los numeros comprendidos en [%d,%d] es igual a %d \n",b,a,resu); } getch(); }

3. Dado un nmero natural n calcular la sumatoria de los primeros n nmeros naturales a travs de una funcin recursiva. Mostrar el resultado obtenido.
#include<stdio.h> #include<conio.h> int sumatoria(int n) { if(n==0) {return(0);} else {return(n+sumatoria(n-1));} } int main() { int n,resu=0; printf("Ingrese n: \n"); scanf("%d",&n); resu=sumatoria(n); printf("La sumatoria de los primeros %d numeros es igual a %d \n",n,resu); getch(); }

4. Dados dos nmeros naturales: base y exponente calcular por medio de una funcin recursiva el valor de la base elevado a exponente y mostrar el resultado.
#include<stdio.h> #include<conio.h> long int potencia(int a, int b) { if(a==0) return(0); if(b==0) return(1); else return(a*potencia(a,(b-1))); } int main() { int a,b; long int resu=0; printf("Ingrese primero la base y despus el exponente: \n"); scanf("%d %d",&a,&b); if (a==0 && b==0) printf("Indeterminado\n");

else { resu=potencia(a,b); printf("%d elevado a la %d es igual a %ld \n",a,b,resu); } getch(); }

5. Teniendo como datos dos nmeros naturales calcular el producto de los nmeros comprendidos entre ellos, incluidos los mismos. Hacerlo por medio de una funcin recursiva. Mostrar el resultado.
#include<stdio.h> #include<conio.h> long int multis(int n1, int n2) { if(n1==n2) {return(n1);} else {return(n1*multis((n1+1),n2));} } int main() { int a,b; long int resu=0; printf("Ingrese dos nmeros enteros: \n"); scanf("%d %d",&a,&b); if(a<=b) { resu=multis(a,b); printf("El producto de los numeros comprendidos en [%d,%d] es igual a %ld \n",a,b,resu); } else { resu=multis(b,a); printf("El producto de los numeros comprendidos en [%d,%d] es igual a %ld \n",b,a,resu); } getch(); }

6. Sabiendo que en la serie numrica de Fibonacci el primer trmino vale 1, el segundo vale 1 y los siguientes son la suma de los dos anteriores, calcular la suma de los primeros 15 trminos. Hacerlo por medio de una funcin recursiva mostrar el resultado obtenido.
#include<stdio.h> #include<conio.h> long int Fib (long int n) {if (n<=1) return (1);return (Fib (n-1) + Fib (n-2 ));}

int main()

{ long int c=0; long int resu=0; for(c=0;c<=14;c++) {resu+=Fib(c);} printf("La suma de los primeros 15 terminos de la serie de Fibonacci es = a %ld",resu); }

7. Dados dos nmeros naturales a y b, siendo b distinto de cero, calcular la divisin entera entre a y b. Hacerlo por medio de una funcin recursiva. Mostrar el resultado obtenido.
#include<stdio.h> #include<conio.h> int divi(int a, int b) { if(a==0) return(0); else { if ((a-b)<b) return(1); else return(1+divi((a-b),b)); } } int main() { int a,b,resu=0; printf("Ingrese el dividendo y el divisor:\n"); scanf("%d %d",&a,&b); if(b==0) printf("No se puede dividir por cero\n"); else { resu=divi(a,b); printf("%d dividido %d es igual a %d \n",a,b,resu); } getch(); }

8. Escribir una funcin recursiva que genere los n primeros nmeros naturales pares.
# include<stdio.h> # include<conio.h> void serie(int); void num(int,int,int); int main() { int n; printf("Ingrese n:\n"); scanf("%d",&n);

printf("La lista de los primeros %d numeros pares es:\n",n); serie(n); getch(); } void serie(int N) { num(N,N,0); } void num(int n,int m,int i) { printf("%d ",(2*(m-n+1-i))+i); if(n>1) num(n-1,m,i); }

Macros o funciones en lnea:

9. Realizar un programa en cdigo C que implemente una macro o funcin en lnea llamada Trunca(x), la misma trunca la parte decimal de x. El argumento x puede ser entero o real.
#include<stdlib.h> #include<stdio.h> #define Trunca(x) (int)(x) int main() { float num; printf("\nIngrese un nmero:\n"); scanf("%f",&num); printf("\nEl Nmero truncado es igual a %d\n",Trunca(num)); system("PAUSE"); return 0; }

10. Implementar y utilizar la macro Redon(x), la cual redondea el valor de x de acuerdo al siguiente criterio: 1) Si x<0 Trunca(x-0.5) 2) x>=0 Trunca(x+0.5) El argumento x puede ser entero o real.
#include<stdlib.h> #include<stdio.h> #define Trunca(x) (int)(x) #define redon(x) x < 0 ? Trunca(x-0.5):Trunca(x+0.5) int main() { float num; printf("\nIngrese un nmero:\n"); scanf("%f",&num); printf("\nEste nmero redondeado a entero es = a %d\n",redon(num)); system("PAUSE"); return 0; }

11. Realizar la macro Partentera(x), donde x es un nmero real, definiendo la parte entera de x como el menor nmero entero ms prximo al mismo.
#include<iostream.h> #include<stdlib.h> #include<stdio.h> #define partentera(x) x < 0 ? (int)(x-0.5):(int)(x+0.5) int main() { float num; printf("\nIngrese un nmero:\n"); scanf("%f",&num); printf("\nLa parte entera de este numero es = a %d\n",partentera(num)); system("PAUSE"); return 0; }

12. Desarrollar una macro o funcin en lnea que convierta grados centgrados a grados Fahrenheit. La formula de conversin es: C = 5/9 (F 32).
#include<iostream.h> #include<stdlib.h> #include<stdio.h> #define grado(x) (x*1.8+32) int main() { float temp; printf("Ingrese una temperatura en grados centigrados: \n"); scanf("%f",&temp); printf("%g C es equivalente a %g F\n",temp,grado(temp)); system("PAUSE"); return 0; }

13. Programe una macro llamada Digito que determine si un carcter es uno de los dgitos de 09.
#include<stdlib.h> #include<stdio.h> #include<ctype.h> #define digito(x) x>=48 && x<=57 ? 1:0 int main() { char c; printf("Ingrese un caracter: \n"); scanf("%c",&c); if(digito(c)) printf("El caracter ingresado es un digito\n"); else printf("El caracter ingresado NO es un digito\n"); system("PAUSE"); return 0; }

14. Escribir una macro que determine si un carcter es una vocal.


#include <stdlib.h> #include<stdio.h> #define vocal(x) x==65||x==69||x==73||x==79||x==85||x==97||x==101||x==105||x==111||x==1 17 ? 1:0 int main() { char c; printf("Ingrese un caracter: \n"); scanf("%c",&c); if(vocal(c)) printf("El caracter ingresado es una vocal\n"); else printf("El caracter ingresado NO es una vocal\n"); system("PAUSE"); return 0; }

15. Escribir una funcin en lnea llamada Par(x), la que define si el entero x es par, y en tal caso que devuelva un verdadero.
#include<stdlib.h> #include<stdio.h> #define par(x) x%2==0 ? 1:0 int main() { int x,num; printf("Ingrese x:\n"); scanf("%d",&x); if(par(x)) printf("El numero es par\n"); else printf("El numero es impar\n"); system("PAUSE"); return 0; }

16. La macro Porciento(x,y), calcula el porcentaje que representa x del total y. Implementar y utilizar dicha macro.
#include<stdlib.h> #include<stdio.h> #define Porciento(x,y) (x*100/y) int main() { float x,y; printf("Ingrese x:\n"); scanf("%f",&x); printf("Ingrese y:\n"); scanf("%f",&y); printf("%g es el %g por ciento de %g \n",x,Porciento(x,y),y); system("PAUSE"); return 0; }

17. Realizar una macro llamada Cuadrada(x), la cual calcula la raz cuadrada de x, siendo x un valor entero. Implementar y utilizar dicha macro.
#include<stdlib.h> #include<stdio.h> #include<math.h> #define cuadrada(x) (sqrt(x)) int main() { int x; printf("Ingrese x:\n"); scanf("%d",&x); printf("La raiz cuadrada de %d es igual a %g system("PAUSE"); return 0; }

\n",x,cuadrada(x));

Vous aimerez peut-être aussi