Dev - C++ - Ayuda!!!

   
Vista:

Ayuda!!!

Publicado por ricardo (3 intervenciones) el 16/07/2014 00:51:53
Hola, necesito ayuda con este programa, lo que debe hacer el programa es lo siguiente:
Escriba un programa que calcule la suma de 1+1/2+1/3+1/4+⋯1/n donde “n” se especifica por el usuario. Aqui esta el programa pero no me funciona...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<stdlib.h>
 
int main(){
	int a=0;float suma=0,b=0;
	printf("INGRESA EL NUMERO DE FRACCIONES: ");
	scanf("%i",&a);
	for(int i=1;i<=a;i++){
		printf("\ni= %i",i);
		b=1/i;
		printf("\nb= %f",b);
		suma=suma+b;
		printf("\nsuma= %f",suma);
		b=0;
	}
	printf("\n\nLA SUMA TOTAL ES: %.2f\n\n",suma);
	system("pause");
}
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 vangodp

Ayuda!!!

Publicado por vangodp (287 intervenciones) el 16/07/2014 02:50:32
no te funciona por que C no permite declarar int i dentro de for, en vez de eso declara i al principio de main junto a las demás variables y for lo cambias por for(i=1;i<=a;i++) y ya debe de andar. Aun que no me entero una leche que estas haciendo ahí XD...al menos ya puedes ver que te falla XD
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

Ayuda!!!

Publicado por ricardo (3 intervenciones) el 16/07/2014 03:41:43
ya solucione el problema, pero al realizar la suma, no da el resultado correcto...
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 vangodp

Ayuda!!!

Publicado por vangodp (287 intervenciones) el 16/07/2014 05:21:26
no se que decirte no he entendio un pimiento de eso: 1+1/2+1/3+1/4+⋯1/n donde “n” se especifica por el usuario.

1+1

o es

1 mas uno dividido por 2....eso que has puesto es una flipada.
Separa por lineas lo que quieres hacer.
1+1
1/2...
o yo que se.
Así es imposible ayudarte.
Dime que tiene que imprimir en pantalla.
En programación se usa () para determinar la prioridad. si lo usas entenderemos mejor o explícate paso a paso que tiene que hacer el programa y no todo en una linea como has puesto.
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

Ayuda!!!

Publicado por ricardo (3 intervenciones) el 16/07/2014 06:24:17
Ok, el usuario va a ingresar un numero n, por ejemplo si ingresa 5, el programa debe de mostrarte:
1 + 1/2 + 1/3 + 1/4 + 1/ 5 =2.283 , el numero que ingrese en usuario debe de ser el denominador, y debe de comer desde 1...
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

Ayuda!!!

Publicado por manuel venezuela (51 intervenciones) el 17/07/2014 17:56:13
con esa correccion corre perfectamente¡¡¡
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<stdlib.h>
 
int main(){
	int a=0;float suma=0,b=0,i;
	printf("INGRESA EL NUMERO DE FRACCIONES: ");
	scanf("%i",&a);
	for( i=1;i<=a;i++){
		printf("\ni= %i",i);
		b=1/i;
		printf("\nb= %f",b);
		suma=suma+b;
		printf("\nsuma= %f",suma);
		b=0;
	}
	printf("\n\nLA SUMA TOTAL ES: %.2f\n\n",suma);
	system("pause");
}
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

Ayuda!!!

Publicado por Capitan Kirk capitan.kirk09@gmail.com (44 intervenciones) el 16/07/2014 12:50:20
Cuando haces

b = 1/i

b está declarado como float (correcto), pero i es de tipo entero y el 1 del numerador también te lo considera como entero, ya que no le has indeicado que esa constante deba ser de otro tipo. Por tanto, 1/i te la efectúa como división entera, cuyo resulñtado será 1 si i=1, y 0 si i>1. Este resultado, luego, te lo convierte a float (dado que b es de tipo float), pero claro, el resultado ya es incorrecto.

Para resolver el problema, puedes poner:

b = 1.0 / i;

o bien

b = 1 / (float)i;

con lo cual ya fuerzas a que a la derecha del signo (=) te lo evalúe como float.

Ten en cuenta que la representación interna de los números enteros es distinta a la de los números en coma flotante, y que, salvo indicación en contrario, siempre intentará evaluar como entero. En tu caso, ciertamente b es coma flotante, pero lo que hay a la derecha, ya que no has indicado nada, y te lo puede evaluar como entero, te lo evalúa como entero.

Saludos,
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