/*1. Crear una función que calcule el cubo de un número real (float

Anuncio
/*1. 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;
}
/* 2. 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);
}
return 0;
}
/* 3. Crear una función llamada signo, que reciba un número real, y devuelva un número entero
con el valor: -1 si el número es negativo, 1 si es positivo o 0 si es cero. /
#include <stdio.h>
int signo (float num)
{
int sig;
if (num > 0)
sig = 1;
if (num == 0)
sig = 0;
if (num < 0)
sig = -1;
return sig;
}
int main()
{
float numero;
while (numero > -1000000)
{
printf("\nEscriba un numero real: ");
scanf("%f", &numero);
printf("%d", signo(numero));
}
return 0;
}
/* 5. 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.h>
#include <string.h>
char primeraLetra (char* cadena)
{
return cadena[0];
}
int main()
{
char palabra[10];
printf("Escriba una palabra\n");
scanf("%s", palabra);
printf("La primera letra es %c.", primeraLetra(palabra));
return 0;
}
/* 6.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.h>
#include <string.h>
char ultimaLetra (char* cadena)
{
return cadena[strlen(cadena)-1];
}
int main()
{
char palabra[10];
int i;
printf("Escriba una palabra\n");
scanf("%s", &palabra);
printf("La ultima letra es: %c", ultimaLetra(palabra));
return 0;
}
/* 7. 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. */
#include <stdio.h>
float perimetro (float numero)
{
float perimetro;
perimetro = 4 * numero;
return perimetro;
}
float area (float numero)
{
float area;
area = numero * numero;
return area;
}
int main()
{
int num;
printf("Escriba un numero: ");
scanf("%d", &num);
printf("Perimetro:%f\n", perimetro(num));
printf("Area:%f\n", area(num));
return 0;
}
/* 8. Crear una función escribirTablaMultiplicar, que reciba como parámetro un número entero, y
escriba la tabla de multiplicar de ese número (por ejemplo, para el 3 deberá llegar desde 3x0=0
hasta 3x10=30). */
#include <stdio.h>
void escribirTablaMultiplicar (int numero)
{
int tabla;
for (tabla=1; tabla<=10; tabla++)
printf("%d x %d = %d\n", numero, tabla, numero * tabla);
return;
}
int main()
{
int num, tabla;
printf("Escriba un numero: ");
scanf("%d", &num);
escribirTablaMultiplicar(num);
return 0;
}
/* 9. Crear una función esPrimo, que reciba un número y devuelva el valor 1 si es un
número primo o 0 en caso contrario. */
#include <stdio.h>
int esPrimo (int n)
{
int r, res;
if(n != 1)
{
r=1;
res=1;
while (res != 0)
{
res = n % ++r;
}
if (n == r)
return 1;
else
return 0;
}
else
return 1;
}
int main()
{
int num;
while (num){
printf("Escriba un numero: ");
scanf("%d", &num);
printf("%d ", esPrimo(num));
}
return 0;
}
/* 10. Crear una función que reciba un número cualquiera y que devuelva como resultado la
suma de sus dígitos. Por ejemplo, si el número fuera 123 la suma sería 6. */
#include <stdio.h>
int sumaDeSusCifras (int numero)
{
int suma=0;
if (numero < 10)
return numero;
else
{
while (numero >= 10)
{
suma += numero % 10;
numero /= 10;
}
suma += numero;
return suma;
}
}
int main()
{
int num;
printf("Escriba un numero entero positivo: \n");
scanf("%d", &num);
printf("La suma de las cifras del numero %d es: %d",
num, sumaDeSusCifras(num));
return 0;
}
/* 11. Crear una función que reciba una letra y un número, y escriba un triángulo formado por
esa letra, que tenga como anchura inicial la que se ha indicado. Por ejemplo, si la letra es * y
la anchura es 4, debería escribir
****
***
**
*
*/
#include <stdio.h>
void dibujaTriangulo (char letra, int numero)
{
int i;
while (numero > 0)
{
for (i=0; i<numero; i++)
printf("%c", letra);
printf("\n");
numero--;
}
return;
}
int main()
{
char letra;
int numero;
printf("Escriba una letra: ");
scanf("%c", &letra);
printf("Escriba un numero: ");
scanf("%d", &numero);
dibujaTriangulo(letra, numero);
return 0;
}
/* 12. Crear un programa que halle cualquier raíz de un número. El usuario deberá indicar el
número (por ejemplo, 2) y el índice de la raiz (por ejemplo, 3 para la raíz cúbica). Pista: hallar la
raíz cúbica de 2 es lo mismo que elevar 2 a 1/3. */
#include <stdio.h>
#include <math.h>
float raizUniversal (int numero, float raiz);
int main()
{
int radicando, indice;;
printf("Escriba el numero al cual le quiere extraer raiz: ");
scanf("%d", &radicando);
printf("Escriba la raiz que quiere extraer: ");
scanf("%d", &indice);
printf("La raiz es: %f", raizUniversal(radicando, indice));
return 0;
}
float raizUniversal(int numero, float ind)
{
float raiz;
raiz = pow(numero, 1/ind);
return raiz;
}
/* 14. Crear un programa que resuelva ecuaciones de segundo grado, del tipo ax2 + bx + c = 0 El
usuario deberá introducir los valores de a, b y c. Pista: la solución se calcula con
x = ? raíz (b2 - 4·a·c) / 2·a */
#include <stdio.h>
#include <math.h>
float ecuacion2oGrado1 (float, float, float);
float ecuacion2oGrado2 (float, float, float);
int main()
{
float a, b, c;
do
{
printf("Escriba las constantes a, b y c\n");
scanf("%f %f %f", &a, &b, &c);
}
while (((a==0) || (b==0) || (c==0)) || (((b*b)-(4*a*c)) < 0));
printf("La raices son: %f %f", ecuacion2oGrado1(a, b, c), ecuacion2oGrado2(a, b, c));
return 0;
}
float ecuacion2oGrado1 (float a, float b, float c)
{
float x1;
x1 = (-b + pow(b*b-4*a*c, 0.5)) / (2*a);
return x1;
}
float ecuacion2oGrado2 (float a, float b, float c)
{
float x2;
x2 = (-b - pow(b*b-4*a*c, 0.5)) / (2*a);
return x2;
}
En este tengo problema con algunas potencias de 5.
/* 15. Crear una función que calcule el valor de elevar un número entero a otro número entero (por
ejemplo, 5 elevado a 3 = 53 = 5 ·5 · 5 = 125). Esta función se debe crear de forma recursiva. */
#include <stdio.h>
#include <math.h>
int exponenciacion (int numero, int numero);
int main()
{
int base, exponente;
while (exponente >= 0)
{
printf("Escriba el numero que quiere potenciar: ");
scanf("%i", &base);
printf("Escriba el numero al que lo quiere elevar: ");
scanf("%i", &exponente);
printf("La potencia es: %d\n\n", exponenciacion(base, exponente));
}
return 0;
}
int exponenciacion (int a, int n)
{
if (n == 0)
return 1;
else
return a * pow(a, n-1);
/* ¿Porqué no funciona para muchas de las potencias de 5
como: 3, 4, 5, 7, 8, 9, 10, 13 ? */
}
/* 16. Como alternativa, 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), usando la orden for
*/
#include <stdio.h>
#include <math.h>
int exponenciacion (int numero, int numero);
int main()
{
int base, exponente;
while (exponente >= 0)
{
printf("Escriba el numero que quiere potenciar: ");
scanf("%d", &base);
printf("Escriba el numero al que lo quiere elevar: ");
scanf("%d", &exponente);
printf("La potencia es: %d\n\n", exponenciacion(base, exponente));
}
return 0;
}
int exponenciacion (int base, int expo)
{
int i, pot=1;
for (i=0; i<expo; i++)
pot *= base;
return pot;
}
/* 16. Crear un programa que emplee recursividad para calcular un número de la serie
Fibonacci (en la que los dos primeros elementos valen 1, y para los restantes, cada elemento es la
suma de los dos anteriores). */
#include <stdio.h>
#include <math.h>
long serieFibonacci (int);
int main()
{
int termino;
while (termino >= 0)
{
printf("Escriba el termino de la serie que quiere encontrar: ");
scanf("%d", &termino);
printf("El termino buscado es: %d\n\n", serieFibonacci(termino));
}
return 0;
}
long serieFibonacci (int n)
{
if ((n == 0) || (n == 1))
return n;
else
return serieFibonacci(n - 1) + serieFibonacci(n - 2);
}
/* 17. Crear un programa que emplee recursividad para calcular un número de la serie
Fibonacci (en la que los dos primeros elementos valen 1, y para los restantes, cada elemento es la
suma de los dos anteriores). */
#include <stdio.h>
#include <math.h>
long serieFibonacci (int);
int main()
{
int termino;
while (termino >= 0)
{
printf("Escriba el termino de la serie que quiere encontrar: ");
scanf("%d", &termino);
printf("El termino buscado es: %d\n\n", serieFibonacci(termino));
}
return 0;
}
long serieFibonacci (int n)
{
if ((n == 0) || (n == 1))
return n;
else
return serieFibonacci(n - 1) + serieFibonacci(n - 2);
}
/* 18. Crear un programa que emplee recursividad para calcular el mayor de los elementos de un
vector. */
#include <stdio.h>
#define TAMANYO_VECTOR 100
int May(int vector[], int n);
main()
{
int i;
int Mayor, n=0;
int vec[TAMANYO_VECTOR];
while (n < 1)
{
printf("Ingrese el numero de elementos: ");
scanf("%d", &n);
}
for (i=0; i<n; i++)
{
printf("\tElemento[%d]: ", i);
scanf("%d", &vec[i]);
}
printf("\nMayor: %d\n", May(vec, n));
}
int May(int vector[], int n)
{
int max, maxResto;
/* Primera línea. */
if (n == 1)
/* Caso base */
max = vector[0];
else {
maxResto = May(vector+1, n-1); /* Maximo del resto del vector */
if (vector[0] > maxResto)
max = vector[0];
else
max = maxResto;
}
return(max);
}
/* 19. Crear, tanto de forma recursiva como de forma iterativa, una función diga si una cadena de
caracteres es simétrica (un palíndromo). Por ejemplo, DABALEARROZALAZORRAELABAD" es
un palíndromo. */
#include <stdio.h>
void palindromo (char cadena[80]);
int main()
{
char letras[80];
int a=1, i;
while ( a )
{
puts("Escriba una palabra o una frase");
scanf("%c", &letras);
palindromo(letras);
}
return 0;
}
void palindromo (char cadena[80])
{
int aux, flag=1, i, j;
for(i=0; (cadena[i]=getchar()) != '\n'; ++i)
aux = i-1;
j=aux;
for(i=0; i<=aux/2; ++i)
{
if (cadena[i] != cadena[j])
{
flag = 0;
break;
}
--j;
}
if (flag == 1)
printf(" ES un palindromo.\n\n");
else
printf(" NO es un palindromo.\n\n");
return;
}
/* 20. 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, tal que m > n, para encontrar
su máximo común divisor, es decir, el mayor entero positivo que divide a ambos: - Dividir m por n
para obtener el resto r (0 = r < n) ; - Si r = 0, el MCD es n.; - Si no, el máximo común divisor es
MCD(n,r). */
#include <stdio.h>
#include <math.h>
int MCD (int num1, int num2);
int main()
{
int a, numero1, numero2;
while( a )
{
printf("Escriba dos numeros enteros:\n");
scanf("%d %d", &numero1, &numero2);
if ((numero1 == 0) || (numero2 == 0))
{
printf("El cero no es factor de ningun numero.\n\n");
continue;
}
printf("MCD(%d , %d) = %d\n\n",
numero1, numero2, MCD(numero1, numero2));
}
return 0;
}
int MCD (int num1, int num2)
{
int c, D, d, r;
if (num1 > num2)
{
D = num1;
d = num2;
}
else
{
D = num2;
d = num1;
}
c = D/d;
r = D % d;
while (r != 0)
{
D = d;
d = r;
c = D/d;
r = D % d;
}
return d;
}
Descargar