Algoritmia - NECESITO AYUDA PARA OPTIMIZAR ESTE CÓDIGO EN PSEINT

 
Vista:

NECESITO AYUDA PARA OPTIMIZAR ESTE CÓDIGO EN PSEINT

Publicado por Yarid Reyes (1 intervención) el 20/05/2015 06:15:51
Buenas noches, tengo este codigo en PSEINT

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
Proceso EXAMEN2
	Limpiar Pantalla;
	Definir M1,M2,M5,M10,B20,B50,B100,B200,B500,C Como Entero;
	Definir D, B Como Caracter;
	D = "S";
	Mientras D="S" Hacer
			C = azar (10000) + 1;
			Escribir "La cantidad generada es " C;
			B500 = (C-C MOD 500)/500; //ESTA OPERACION DEFINE LA CANTIDAD DE BILLETES NECESARIOS PARA GENERAR LA CANTIDAD GENERA
			C = C MOD 500;
			B200 = (C-C MOD 200)/200;
			C = C MOD 200;
			B100 = (C-C MOD 100)/100;
			C = C MOD 100;
			B50 = (C-C MOD 50)/50;
			C = C MOD 50;
			B20 = (C-C MOD 20)/20;
			C = C MOD 20;
			M10 = (C-C MOD 10)/10;
			C = C MOD 10;
			M5 = (C-C MOD 5)/5;
			C = C MOD 5;
			M2 = (C-C MOD 2)/2;
			M1 = C MOD 2;
		Si B500 >=1 Entonces
			Si B500 >=2 Entonces
				B = "Billetes";
				Escribir B500 " " B " de 500";
			Sino
				Escribir B500 " Billete de 500";
			Fin Si
		FinSi
		Si B200 >=1 Entonces
			Si B200 >=2 Entonces
				B = "Billetes";
				Escribir B200 " " B " de 200";
			Sino
				Escribir B200 " Billete de 200";
			Fin Si
		Fin si
		Si B100 >=1 Entonces
			Si B100 >=2 Entonces
				B = "Billetes";
				Escribir B100 " " B " de 100";
			Sino
				Escribir B100 " Billete de 100";
			Fin Si
		Fin si
		Si B50 >=1 Entonces
			Si B50 >=2 Entonces
				B = "Billetes";
				Escribir B50 " " B " de 50";
			Sino
				Escribir B50 " Billete de 50";
			Fin Si
		Fin si
		Si B20 >=1 Entonces
			Si B20 >=2 Entonces
				B = "Billetes";
				Escribir B20 " " B " de 20";
			Sino
				Escribir B20 " Billete de 20";
			Fin Si
		Fin si
		Si M10 >=1 Entonces
			Si M10 >=2 Entonces
				B = "Monedas";
				Escribir M10 " " B " de 10";
			Sino
				Escribir M10 " Moneda de 10";
			Fin Si
		Fin si
		Si M5 >=1 Entonces
			Si M5 >=2 Entonces
				B = "Monedas";
				Escribir M5 " " B " de 5";
			Sino
				Escribir M5 " Moneda de 5";
			Fin Si
		Fin si
		Si M2 >=1 Entonces
			Si M2 >=2 Entonces
				B = "Monedas";
				Escribir M2 " " B " de 2";
			Sino
				Escribir M2 " Moneda de 2";
			Fin Si
		Fin si
		Si M1 >=1 Entonces
			Si M1 >=2 Entonces
				B = "Monedas";
				Escribir M1 " " B " de 1";
			Sino
				Escribir M1 " Moneda de 1";
			Fin Si
		Fin si
			Escribir "¿Deseas realizar otra conversion (S/N)?";
			Leer D;
			Limpiar Pantalla;
		Escribir "Gracias por usar el programa";
	Fin Mientras
FinProceso

Se ejecuta y hace esto:

Gracias por usar el programa
La cantidad generada es 6084
12 Billetes de 500
1 Billete de 50
1 Billete de 20
1 Moneda de 10
2 Monedas de 2
¿Deseas realizar otra conversion (S/N)?
>

No tengo errores en el codigo y todo funciona de maravilla, solo quisiera ver si alguien puede optimizar mas el codigo. saludos y agradezco su apoyo
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 Fede

NECESITO AYUDA PARA OPTIMIZAR ESTE CÓDIGO EN PSEINT

Publicado por Fede (2 intervenciones) el 21/05/2015 01:42:04
Si te pones a para cada valor monetario (billete o moneda) realizas las mismas operaciones.
Así que una forma de reducir las lineas de código sería utilizando un Según y un Para.

Voy a reescribir tu código modificado.

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
48
49
50
51
52
53
54
55
56
57
Proceso CodigoModificado
	Limpiar Pantalla;
	Definir M ,C, I Como Entero;  //Mi variable M será utilizada tanto para los billetes como para las monedas.
	Definir D, PrintM Como Caracter;  //PrintM en lugar de B
	D = "S";
	Mientras D="S" Hacer
 			C = azar (10000) + 1;
			Escribir "La cantidad generada es " C;
                        Para I <- 1 Hasta 9 Con Paso 1 Hacer;
						Segun I Hacer
									1:
									    M = 500
									    PrintM = "Billete"
									2:
									    M = 200
									    PrintM = "Billete"
									3:
									    M = 100
									    PrintM = "Billete"
									4:
									    M = 50
									    PrintM = "Billete"
									5:
									    M = 20
									    PrintM = "Billete"
									6:
									    M = 10
									    PrintM = "Moneda"
									7:
									    M = 5
									    PrintM = "Moneda"
								8:
									    M = 2
									    PrintM ="Moneda"
									9:
									    M = 1
									    PrintM ="Moneda"
 
						FInSegun
 
						M = (C - C MOD N) / N ;
						C = C MOD N;
 
  		                 		Si M >=1 Entonces
  		                 					Si M >=2 Entonces
  		                 						Escribir "Total " ,M  , PrintM , "s  de" , N;  //Fíjate como se escribe.
  		                 					Sino
  		                 						Escribir "Total "M , PrintM ,  " de" , N;
  		                 					Fin Si
  		                 		Fin si
                        Fin Para
                        Escribir "¿Deseas realizar otra conversion (S/N)?";
			Leer D;
			Limpiar Pantalla;
		        Escribir "Gracias por usar el programa";
	Fin Mientras
FinProceso


No conozco el lenguaje, quizás tenga algún error de sintaxis, pero básicamente esa es la idea.

pd: Me lo mostro sin identar -.-.
Después con más tiempo lo corrijo.
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
sin imagen de perfil

NECESITO AYUDA PARA OPTIMIZAR ESTE CÓDIGO EN PSEINT

Publicado por antonia (1 intervención) el 09/06/2015 02:38:46
Hola me gusta la programación es un tema de aprender constantemente, muy buena la información.
Saludos!!
________________
Trabajando en mi proyecto para Grupos Electrogenos
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