Dev - C++ - Sumatoria

 
Vista:

Sumatoria

Publicado por Valentina (8 intervenciones) el 13/10/2019 23:21:51
Hola amigos quiero hacer un algoritmo con una función que calcule la siguiente sucesión: 1/2 + 3/4 + 5/8 + 7/16 + 9/32 etc y que la función debe retorne el valor final de dicha sucesión.
El problema es que la sumatoria me da en ceros. Agradezco mucho su ayuda. El resultado debe retornarse en el main.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
float sucesion(float);
int main ()
{   float n,s,m;
	printf("Ingrese el número de ciclos ");
	scanf("%f",&n);
	s=sucesion(n);
	printf("La sucesion es: %f\n",m);
}
float sucesion(float k)
{  float m, a,b,i;
    b=2;
    a=1;
    m=0;
 	for (i=1; i<=k; i++)
 	{
 	    printf("%f/%f\n",a,b);
 		a=a+2;
 		b=2*b;
 		m=(a/b)+m;
	}
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Sumatoria

Publicado por Alfil (1444 intervenciones) el 13/10/2019 23:49:17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
 
float sucesion( float );
 
int main ()
{
    float n, s;
 
    printf( "Ingrese el número de ciclos: " );
    scanf( "%f", &n );
 
    s = sucesion( n );
 
    printf( "\nLa sucesion es: %.2f\n", s );
 
    return 0;
}
 
float sucesion( float k )
{
    float m, a, b;
 
    a = 1.0f;
    b = 2.0f;
    m = 0.0f;
 
    printf( "\n" );
    for( int i = 1; i <= k; i++ ){
        printf( "%.0f/%.0f\n", a, b );
        m += ( a / b);
        a += 2;
        b += 2;
    }
 
    return m;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sumatoria

Publicado por Valentina (8 intervenciones) el 14/10/2019 00:04:08
Muchas graaacias, sabes cómo hacer para que la precisión de la sumatoria esté dada por el número de ciclos que da el usuario?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Sumatoria

Publicado por Rodrigo (539 intervenciones) el 14/10/2019 04:28:32
Parece que b hay que multiplicar por 2, no sumar 2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Sumatoria

Publicado por Alfil (1444 intervenciones) el 14/10/2019 05:56:55
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
 
float sucesion( float );
 
int main ()
{
    float n, s;
 
    printf( "Ingrese el número de ciclos: " );
    scanf( "%f", &n );
 
    s = sucesion( n );
 
    int p = int( n );
    printf( "\nLa sucesion es: %.*f\n", p, s );
 
    return 0;
}
 
float sucesion( float k )
{
    float m, a, b;
 
    a = 1.0f;
    b = 2.0f;
    m = 0.0f;
 
    printf( "\n" );
    for( int i = 1; i <= k; i++ ){
        printf( "%.0f/%.0f\n", a, b );
        m += ( a / b);
        a += 2;
        b *= 2;
    }
 
    return m;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar