/* 7.4b_Crear una función que calcule el cubo de un número real (float). El resultado deberá ser otro número real. Probar esta función para calcular el cubo de 3.2 y el de 5. */ #include <stdio.h> float cubica(float numero) { float cubica; cubica = numero * numero * numero; return cubica; } int main() { float numero; float cubo; int i=0; while(numero >= -1000000) { if(i==0) puts("\nEscriba un numero real"); else puts("\nEscriba otro numero real"); scanf("%f", &numero); printf("%f elevado al cubo es %f\n", numero,cubo=cubica(numero)); i ++; } return 0; } /* 7.4c_Crear una función que calcule cual es el menor de dos números enteros. El resultado será otro número entero. */ #include <stdio.h> int minus(int num1, int num2) { int min; min = num1 < num2? num1: num2; return min; } int main() { int numero1, numero2, menor; while (numero1, numero2) { printf(" Escriba un numero\n"); scanf("%d",&numero1); printf(" Escriba otro numero\n"); scanf("%d",&numero2); menor=minus(numero1, numero2); printf(" El menor es %d\n\n", menor); . y devuelva un número entero con el valor: -1 si el número es negativo.h> int signo (float num) { int sig. que reciba un número real. */ #include <stdio. 1 si es positivo o 0 si es cero. if (num < 0) sig = -1.4d_Crear una función llamada �signo�. if (num > 0) sig = 1. } /* 7.} return 0. } int main() { float numero. return sig. if (num == 0) sig = 0. &numero). signo(numero)). } /* 7. scanf("%f".4e_Crear una función que devuelva la primera letra de una cadena de texto. Probar esta función para calcular la primera letra de la frase �Hola� */ #include <stdio. } int main() { char palabra[10].while (numero > -1000000) { printf("\nEscriba un numero real: "). . } return 0. printf("%d".h> char primeraLetra (char* cadena) { return cadena[0].h> #include <string. h> char ultimaLetra (char* cadena) { return cadena[strlen(cadena)-1]. &palabra).4e_Crear una función que devuelva la primera letra de una cadena de texto. scanf("%s".". printf("La primera letra es %c. } int main() { char palabra[10]. printf("Escriba una palabra\n"). palabra). int i.h> #include <string. scanf("%s". Probar esta función para calcular la primera letra de la frase �Hola� */ #include <stdio. primeraLetra(palabra)). .printf("Escriba una palabra\n"). } /* 7. ultimaLetra(palabra)). printf("La ultima letra es: %c". return 0. return perimetro. } /*7. perimetro = 4 * numero.5b_Crear una función que reciba un número y muestre en pantalla el perímetro y la superficie de un cuadrado que tenga como lado el número que se ha indicado como parámetro.h> float perimetro (float numero) { float perimetro. */ #include <stdio. . area = numero * numero. return area.return 0. } float area (float numero) { float area. } int main() { int num. } int main() { . perimetro(num)). area(num)). } /* 7. numero. printf("Area:%f\n". numero * tabla).h> void escribirTablaMultiplicar (int numero) { int tabla. para el 3 deberá llegar desde 3x0=0 hasta 3x10=30). y escriba la tabla de multiplicar de ese número (por ejemplo. tabla. return. tabla<=10. &num). scanf("%d". */ #include <stdio.6b_Crear una función �escribirTablaMultiplicar�.printf("Escriba un numero: "). return 0. printf("Perimetro:%f\n". tabla++) printf("%d x %d = %d\n". for (tabla=1. que reciba como parámetro un número entero. scanf("%d". tabla.6c_Crear una función �esPrimo�.int num. res.h> int esPrimo (int n) { int r. return 0. escribirTablaMultiplicar(num). while (res != 0) { res = n % ++r. res=1. if(n != 1) { r=1. } if (n == r) . */ #include <stdio. printf("Escriba un numero: "). que reciba un número y devuelva el valor 1 si es un número primo o 0 en caso contrario. &num). } /* 7. } else return 1. else return 0. scanf("%d". esPrimo(num)).7e_Crear una función que reciba un número cualquiera y que devuelva como resultado la suma de sus dígitos.h> int sumaDeSusCifras (int numero) { int suma=0. &num). while (num){ printf("Escriba un numero: "). } /*7. printf("%d ". si el número fuera 123 la suma sería 6. Por ejemplo. . */ #include <stdio. } return 0. } int main() { int num.return 1. printf("Escriba un numero entero positivo: \n"). else { while (numero >= 10) { suma += numero % 10.if (numero < 10) return numero. return 0. } suma += numero.7f_Crear una función que reciba una letra y un número. } } int main() { int num. printf("La suma de las cifras del numero %d es: %d". y escriba un �triángulo� formado por esa . num. } /* 7. sumaDeSusCifras(num)). return suma. &num). numero /= 10. scanf("%d". int numero) { int i. si la letra es * y la anchura es 4. while (numero > 0) { for (i=0.letra. i<numero. letra). debería escribir **** *** ** * #include <stdio. numero--. que tenga como anchura inicial la que se ha indicado. printf("Escriba una letra: "). } return.h> void dibujaTriangulo (char letra. */ . i++) printf("%c". int numero. } int main() { char letra. Por ejemplo. printf("\n"). raizUniversal(radicando. scanf("%d". Pista: hallar la raíz cúbica de 2 es lo mismo que elevar 2 a 1/3. El usuario deberá indicar el número (por ejemplo. printf("Escriba el numero al cual le quiere extraer raiz: "). scanf("%d". . */ #include <stdio. } /* 7. printf("Escriba la raiz que quiere extraer: "). printf("La raiz es: %f". indice. return 0. indice)). printf("Escriba un numero: "). &numero). int main() { int radicando.. scanf("%d". &letra).2a_Crear un programa que halle cualquier raíz de un número. numero). float raiz). return 0. &radicando). 3 para la raíz cúbica). dibujaTriangulo(letra.h> #include <math.h> float raizUniversal (int numero.scanf("%c". 2) y el índice de la raiz (por ejemplo. &indice).9. int main() { float a.9. &a. b y c\n"). float. &b. do { printf("Escriba las constantes a. float). return raiz.h> float ecuacion2oGrado1 (float. float ind) { float raiz.2b_Crear un programa que resuelva ecuaciones de segundo grado. } /* 7. b. c.h> #include <math. 1/ind). b y c. float. del tipo ax2 + bx + c = 0 El usuario deberá introducir los valores de a. Pista: la solución se calcula con x = ? raíz (b2 � 4·a·c) / 2·a */ #include <stdio. } . float).} float raizUniversal(int numero. scanf("%f %f %f". float ecuacion2oGrado2 (float. raiz = pow(numero. &c). . b. x2 = (-b . ecuacion2oGrado1(a. float b. } float ecuacion2oGrado1 (float a.while (((a==0) || (b==0) || (c==0)) || (((b*b)-(4*a*c)) < 0)). float b. c). } float ecuacion2oGrado2 (float a.5)) / (2*a). 0. x1 = (-b + pow(b*b-4*a*c. 0. ecuacion2oGrado2(a. b. float c) { float x1. float c) { float x2. printf("La raices son: %f %f".pow(b*b-4*a*c. return x1. } En este tengo problema con algunas potencias de 5. return 0. return x2. c)).5)) / (2*a). exponenciacion(base. scanf("%i". */ #include <stdio. exponente. scanf("%i". int n) { if (n == 0) return 1.10a_Crear una función que calcule el valor de elevar un número entero a otro número entero (por ejemplo. int main() { int base. exponente)). printf("Escriba el numero al que lo quiere elevar: ").h> #include <math. } int exponenciacion (int a. 5 elevado a 3 = 53 = 5 ·5 · 5 = 125).h> int exponenciacion (int numero./* 7. &exponente). . printf("La potencia es: %d\n\n". while (exponente >= 0) { printf("Escriba el numero que quiere potenciar: "). Esta función se debe crear de forma recursiva. &base). } return 0. int numero). 4. usando la orden �for�. exponente. printf("Escriba el numero al que lo quiere elevar: ").h> #include <math. 7. 13 ? */ } /* 7. crear una función que calcule el valor de elevar un número entero a otro número entero de forma NO recursiva (lo que llamaremos �de forma iterativa�).h> int exponenciacion (int numero. 8.10b_Como alternativa. scanf("%d". 10. printf("La potencia es: %d\n\n". &exponente). */ #include <stdio. /* ¿Porqué no funciona para muchas de las potencias de 5 como: 3. &base). int numero). n-1). exponente)). int main() { int base. 5. scanf("%d". } .else return a * pow(a. exponenciacion(base. while (exponente >= 0) { printf("Escriba el numero que quiere potenciar: "). 9. i<expo. cada elemento es la suma de los dos anteriores). */ #include <stdio. pot=1. return pot. y para los restantes.h> #include <math. for (i=0. i++) pot *= base. int main() .10c_Crear un programa que emplee recursividad para calcular un número de la serie Fibonacci (en la que los dos primeros elementos valen 1. } int exponenciacion (int base. } /* 7.return 0.h> long serieFibonacci (int). int expo) { int i. } return 0. serieFibonacci(termino)). scanf("%d". } long serieFibonacci (int n) { if ((n == 0) || (n == 1)) return n. } /* 7. else return serieFibonacci(n . printf("El termino buscado es: %d\n\n". &termino).10c_Crear un programa que emplee recursividad para calcular un número de la serie Fibonacci (en la que los dos primeros elementos valen 1. while (termino >= 0) { printf("Escriba el termino de la serie que quiere encontrar: ").2). cada elemento es la suma de los dos anteriores).1) + serieFibonacci(n .{ int termino. y para los restantes. */ . } return 0. } long serieFibonacci (int n) { if ((n == 0) || (n == 1)) return n.h> long serieFibonacci (int). . scanf("%d". serieFibonacci(termino)). int main() { int termino.2).h> #include <math. &termino). printf("El termino buscado es: %d\n\n". else return serieFibonacci(n . while (termino >= 0) { printf("Escriba el termino de la serie que quiere encontrar: ").1) + serieFibonacci(n .#include <stdio. } for (i=0. &n). i). } . int vec[TAMANYO_VECTOR]. n=0.} /* 7.10e_Crear un programa que emplee recursividad para calcular el mayor de los elementos de un vector. i++) { printf("\tElemento[%d]: ". int Mayor. scanf("%d". main() { int i. */ #include <stdio. int n). i<n. &vec[i]).h> #define TAMANYO_VECTOR 100 int May(int vector[]. while (n < 1) { printf("Ingrese el numero de elementos: "). scanf("%d". else { maxResto = May(vector+1. n)). /* Maximo del resto del vector */ if (vector[0] > maxResto) max = vector[0].printf("\nMayor: %d\n". if (n == 1) /* Caso base */ max = vector[0].10g_Crear. May(vec. } return(max). "DABALEARROZALAZORRAELABAD" es un palíndromo. n-1). } /* 7. maxResto. else max = maxResto. int n) /* Primera línea. una función diga si una cadena de caracteres es simétrica (un palíndromo). . tanto de forma recursiva como de forma iterativa. Por ejemplo. */ #include <stdio. } int May(int vector[].h> void palindromo (char cadena[80]). */ { int max. while ( a ) { puts("Escriba una palabra o una frase"). } return 0. &letras). ++i) { . scanf("%c". j=aux. j. i. for(i=0. ++i) aux = i-1. (cadena[i]=getchar()) != '\n'. int a=1. } void palindromo (char cadena[80]) { int aux.int main() { char letras[80]. flag=1. i. i<=aux/2. for(i=0. palindromo(letras). . . */ #include <stdio.h> #include <math. tal que m > n. int num2).Si no. el MCD es n. el mayor entero positivo que divide a ambos: Dividir m por n para obtener el resto r (0 = r < n) . . es decir.. para encontrar su máximo común divisor. } if (flag == 1) printf(" ES un palindromo. else printf(" NO es un palindromo. break.h> int MCD (int num1. } /* 7.\n\n").if (cadena[i] != cadena[j]) { flag = 0. el máximo común divisor es MCD(n. } --j.Si r = 0.r).10h_Crear un programa que encuentre el máximo común divisor de dos números usando el algoritmo de Euclides : Dados dos números enteros positivos m y n.\n\n"). return. . while( a ) { printf("Escriba dos numeros enteros:\n"). continue. int num2) { int c. if (num1 > num2) { D = num1. numero1. numero2. } printf("MCD(%d . } return 0. MCD(numero1. D. %d) = %d\n\n". d.\n\n"). &numero2).int main() { int a. d = num2. numero1. if ((numero1 == 0) || (numero2 == 0)) { printf("El cero no es factor de ningun numero. &numero1. numero2)). scanf("%d %d". numero2. r. } int MCD (int num1. veo cosas simplificables. d = num1. (Al final recopilo los pocos problemas "serios"). d = r.. } return d. r = D % d.. r = D % d. En general están bien.} else { D = num2..Saludos! V-. c = D/d. pero en un primer vistazo. } . } c = D/d. 23-Aug-2012 01:14 Nacho Cabanes (+21) Haces bien en no estancarte y avanzar. while (r != 0) { D = d. sobre todo en cuanto a variables locales no necesarias o a algún "return" sin valor como última orden de la función.. Por ejemplo: . int minus(int num1. } podría ser int minus(int num1. if (num < 0) sig = -1. if (num > 0) sig = 1. int num2) { return num1 < num2? num1: num2. return min. if (num == 0) sig = 0. int num2) { int min. . min = num1 < num2? num1: num2. } Y de igual modo: int signo (float num) { int sig. } Mientras que void escribirTablaMultiplicar (int numero) { int tabla. } podría ser int signo (float num) { if (num > 0) return 1. if (num == 0) return 0. numero * tabla). } . numero.return sig. tabla<=10. return. for (tabla=1. tabla. tabla++) printf("%d x %d = %d\n". return -1. numero * tabla). no es recursiva! . . tabla++) printf("%d x %d = %d\n".La potencia recursiva.podría ser void escribirTablaMultiplicar (int numero) { int tabla.. pasa como parámetro el mismo array sin modificar. en vez de escribir algo en pantalla (reconozco que el enunciado no lo deja claro).. for (tabla=1. tabla<=10. pero indícale que empiece a analizar en la siguiente posición.esPrimo es muy difícil de seguir. Mejor. } Ahora. tabla. . . los problemas un poco más "serios": .El mayor elemento de un vector hace una cosa muy peligrosa: ¿por qué aumentas en 1 un array? Puede tener efectos colaterales que me temo que no has previsto. Se puede hacer de una forma mucho más sencilla.Lo ideal sería que "palindromo" devolviera un valor. numero.