Dev - C++ - ayuda el programa nada ams me toma los primeros valores y hace el calculo de ellos

 
Vista:
sin imagen de perfil

ayuda el programa nada ams me toma los primeros valores y hace el calculo de ellos

Publicado por jj (1 intervención) el 18/10/2017 01:55:37
buenas estoy elaborando un programa en el cual debo calcular el monto de reintegro de la factura segun sea su estado civil el programa corre normal pero cuando selecciono una opción diferente siempre hace el calculo de la primera opción aqui les dejo el programa

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
38
39
40
41
42
43
44
#include<stdlib.h>
#include<stdio.h>
 
int main (void)
{
	float e,rt,monto,total,s,c,d,v;
 
	printf ("\n indique el monto de su factura (en numeros):");
	scanf("\n %f",&monto);
	printf("\n para el reintegro debe indicar cual es su estado cilvil casado(c)");
	printf("\n soltero(s)");
	printf("\n divorciado(d)");
	printf("\n viudo(v)");
	printf("\n indique su estado civil:");
	scanf("\n %f",e);
 
	if((e==s))
	{
		total=(monto*0.9)+5000;
		rt=monto+total;
		printf("\n el reintegro total es: %f",rt);
	}
	if ((e==c))
	{
		total=(monto*0.16)*4;
		rt=monto+total;
		printf("\n el reintegro total es: %f ",rt);
	}
	if ((e==d))
	{
		total=(monto*0.5);
		rt=monto+total;
		printf("\n el reintegro total es: %f ",rt);
	}
	if((e==v))
	{
		total=(monto*0.85);
		rt=monto+total;
		printf("\n el reintegro total es; %f",rt);
	}
 
	system("pause");
	return 0;
}
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
sin imagen de perfil
Val: 171
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda el programa nada ams me toma los primeros valores y hace el calculo de ellos

Publicado por juanki (73 intervenciones) el 18/10/2017 10:29:52
Hola

1
2
3
4
5
6
7
8
9
float e,rt,monto,total,s,c,d,v;
 
	printf ("\n indique el monto de su factura (en numeros):");
	scanf("\n %f",&monto);
	printf("\n para el reintegro debe indicar cual es su estado cilvil casado(c)");
	printf("\n indique su estado civil:");
	scanf("\n %f",e);
 
	if((e==s))

¿Por que float para guardar el estado civil? ¿No sería más correcto un char?

a parte, en ese if comparas e con s, pero a s no le has dado ningún valor, por lo tanto nadie sabe lo que contendrá, así que el resultado puede ser cualquiera.

A parte, en el scanf que pides el valor para e, se te ha olvidado el &

Imagino que tú lo que quieres hacer es algo así:

1
if((e=='s'))

Para eso e tiene que ser de tipo char. Te recomiendo que te mires un curso de C.

Un saludo
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
sin imagen de perfil
Val: 1.440
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ayuda el programa nada ams me toma los primeros valores y hace el calculo de ellos

Publicado por dario (107 intervenciones) el 18/10/2017 11:42:45
Tu mismo programa arreglado.

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
38
39
40
41
42
43
44
45
46
47
#include <stdlib.h>
#include <stdio.h>
 
int main ()
{
	float rt,monto,total=0;
	char e; //el estado civil debe ser caracter 'c', 's', 'd' o 'v'
 
	printf ("\nindique el monto de su factura (en numeros):");
	scanf("%f",&monto);
 
	printf("\npara el reintegro debe indicar cual es su estado civil");
    printf("\nCasado (c)");
	printf("\nsoltero(s)");
	printf("\ndivorciado(d)");
	printf("\nviudo(v)");
	printf("\nindique su estado civil: ");
	scanf(" %c",&e);
 
	if (e == 's')
	{
		total=(monto*0.9)+5000;
		rt=monto+total;
		printf("\n el reintegro total es: %4.2f",rt);
	}
	else if (e == 'c')
	{
		total=(monto*0.16)*4;
		rt=monto+total;
		printf("\n el reintegro total es: %4.2f ",rt);
	}
	else if (e == 'd')
	{
		total=(monto*0.5);
		rt=monto+total;
		printf("\n el reintegro total es: %4.2f ",rt);
	}
	else
	{
		total=(monto*0.85);
		rt=monto+total;
		printf("\n el reintegro total es; %4.2f",rt);
	}
 
	//system("pause");
	return 0;
}
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