Documentos de Académico
Documentos de Profesional
Documentos de Cultura
}
//salida del programa
// Antes de llamar a intercambia_mal int main()
// Valores 1 2 {
// Dentro de intercambia_mal: float x,p;
// Valores antes de intercambiar 1 2 int iteraciones,condicion_salida;
// Dentro de intercambia_mal: printf("\nIntroduce x, precision, iteraciones:");
// Valores despues de intercambiar 2 1 scanf("%f%f%d",&x,&p,&iteraciones);
// Salgo de la funcion printf("\ne elevado a %f, con precision %f e iteraciones %d=%f",
// Despues de llamar a intercambia_mal x,p,iteraciones,ex(x,p,iteraciones,&condicion_salida
// Valores 1 2 ));
// Dentro de intercambia_bien: if (condicion_salida)
// Valores antes de intercambiar 1 2 printf("\nHa parado por precision");
// Dentro de intercambia_bien: else
// Valores despues de intercambiar 2 1 printf("\nHa parado por iteraciones");
// Salgo de la funcion }
// Despues de llamar a intercambia_bien
// Valores 2 1 //ejemplos de ejecucion
//para por iteraciones
// Introduce x, precision, iteraciones:2 .000001 4
// e elevado a 2.000000, con precision 0.000001 e iteracion
es 4=6.333333
//e elevado a x con parametro adicional para informar // Ha parado por iteraciones
//sobre la condicion de terminacion //para por precision
#include<stdio.h> // Introduce x, precision, iteraciones:2 .001 100
float ex(float x, float precision, int maxiter, int *estado // e elevado a 2.000000, con precision 0.001000 e iteracion
) es 100=7.388713
{ // Ha parado por precision
int n=0;
float e_x=0,t_n=1,t_n_1;
//mientras no se alcance la precision #include<stdio.h>
//y mientras no se superen el maximo //separa un float en parte entera y decimal
//numero de iteraciones //ejemplo en el que se producen dos resultados
while(t_n>precision&&n<maxiter) //no pueden devolverse con un unico return
{ //se pueden devolver en dos parametros por referencia
//suma del termino actual void separa(float n, float *pentera,float *pdecimal)
e_x=e_x+t_n; {
//actualizacion de n //asigno n como entero a *pentera, se pierden los
n++; //decimales
//actualizacion del termino anterior *pentera=(int)n;
t_n_1=t_n; //la parte decimal es el original
//calculo del siguiente en base al anterior //menos la parte entera
t_n=t_n_1*x/n; *pdecimal=n−*pentera;
} }
//si t_n es <= precision, ha parado
//por esa condicion int main()
if (t_n<=precision) {
*estado=1; float a=7.3,b,c;
//en caso contrario por alcanzar separa(a,&b,&c);
//el maximo numero de iteraciones printf("%f %f %f",a,b,c);
//considero que no se van a dar las }
//dos condiciones simultaneamente //salida del programa
else //7.300000 7.000000 0.300000
*estado=0;
return e_x;
}
//escribir una funcion que calcule //devuelve la media de los n
//la media de los n primeros numeros //primeros numeros tales que
//mayores o iguales que 1 //...
//tales que la suma de la primera float media_rara(int n,int c)
//de sus cifras con la ultima {
//es divisible entre una cifra recibida int conta=0,num=1;
//como parametro y que además no float suma=0;
//contienen a ese digito while(conta<n)
#include<stdio.h> {
if(suma_primera_ultima(num)%c==0&&
//devuelve la primera cifra !contienex(num,c))
int primera(int n) {
{ conta++;
return n%10; suma=suma+num;
} }
num++;
//devuelve la ultima cifra }
int ultima(int n) return suma/n;
{ }
int cifra=0; //devuelve una cifra != 0
while(n!=0) int pide_cifra_no_cero(void)
{ {
cifra=n%10; int cifra;
n=n/10; do{
} printf("\nIntroduce una cifra:");
return cifra; scanf("%d",&cifra);
} }while(cifra<=0||cifra>9);
return cifra;
//devuelva la suma de la }
//primera y la ultima //devuelve una cifra > 0
int suma_primera_ultima(int n) int pide_mayor_cero(void)
{ {
return primera(n)+ultima(n); int num;
} do{
printf("\nIntroduce un numero mayor que cero:");
//devuelve 1 si n contiene a cifra scanf("%d",&num);
//0 en caso contrario }while(num<=0);
int contienex(int n,int cifra) return num;
{ }
while(n!=0) int main()
{ {
if (n%10==cifra) int cantidad,cifra;
return 1; float m;
n=n/10; cantidad=pide_mayor_cero();
} cifra=pide_cifra_no_cero();
return 0; m=media_rara(cantidad,cifra);
} printf("\n%f",m);
}
//mostrar los n primeros numeros
//tales que la suma de la mayor //devuelve una cifra distinta
//de sus cifras con la menor de //de cero
//sus cifras sea divisible por int pide_cifra_no_cero(void)
//un digito mayor que cero {
//introducido por el teclado int cifra;
#include<stdio.h> do{
printf("\nIntroduce una cifra:");
//devuelve la mayor de las scanf("%d",&cifra);
//cifras de n }while(cifra<=0||cifra>9);
int mayor(int n) return cifra;
{ }
int cifra=n%10,mayor=cifra;
n=n/10; //devuelve un numero mayor
while(n!=0) //que cero
{ int pide_mayor_cero(void)
cifra=n%10; {
if (cifra>mayor) int num;
mayor=cifra; do{
n=n/10; printf("\nIntroduce un numero mayor que cero:");
} scanf("%d",&num);
return mayor; }while(num<=0);
} return num;
}
//devuelve la menor de las
//cifras de n //en el main el esquema
int menor(int n) //comentado en clase
{ int main()
int cifra=n%10,menor=cifra; {
n=n/10; int num=0,n,conta=0,c;
while(n!=0) n=pide_mayor_cero();
{ c=pide_cifra_no_cero();
cifra=n%10; //mientras no encuentre n
if (cifra<menor) //numeros que cumplan la
menor=cifra; //condicion
n=n/10; while(conta<n)
} {
return menor; //si se cumple la condicion
} if(suma_mayor_menor(num)%c==0)
{
//devuelve la suma de la //lo cuento
//mayor y de la menor de las conta++;
//cifras //lo muestro
int suma_mayor_menor(int n) printf("\n%d",num);
{ }
return mayor(n)+menor(n); //siguiente numero
} num++;
}
}