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

   
Vista:

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

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

Publicado por juanki (66 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

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
Revisar política de publicidad