Vous êtes sur la page 1sur 4

Ejercicios y Prácticas resueltas en lenguaje de programación en C

La práctica resuelta que se plantea consiste en la entrega de un ticket con una numeración
para la atención al cliente tomando en cuenta si es Cliente (que posea cuenta en un banco por
ejemplo) o que NO sea Cliente del Banco.
Para ello la numeración debe partir para los Clientes del 101 al 199 y para los No Clientes del
301 al 399.
El orden de atención al cliente se ha de efectuar de la siguiente manera:
1 – Debe existir una opción en el menú para seleccionar si el usuario es Cliente o No Cliente.
2 – Además el menú contara con una opción para el cajero, siendo este pulsado para saber
cuál de los clientes será atendido, tomando en cuenta los siguientes criterios:
a – Si existen más de diez (10) No Clientes y menos de cinco (5) Clientes se atenderán a dos
(2) No Clientes y a un Cliente.
b – Si existen más de quince (15) Clientes y menos de ocho (8) No Clientes el procedimiento
es: por cada tres (3) Clientes se atiende a un No Cliente.
c – Y de no encontrarse dentro de estas condiciones se atenderá a uno de cada tipo, es
decir, por cada Cliente a un No Cliente.
se ha de tener en cuenta que a veces el programa dará la sensación de que se esta
equivocando al dar el ticket correspondiente a un cliente o no, esto es debido a que el usuario
no ha especificado si cuando los valores correspondientes a clientes y no clientes determinan
la inicialización de los correspondientes contadores o en su lugar se mantienen para mantener
el orden independientemente del cambio de condicional.

1. /*
2. Programa que simula el sistema QMATIC, segun el comentario
3. enviado por un usuario del blog www.aprendoencasa.com
4. proponiendo el usuario el siguiente ejercicio para resolver.
5.
6. se ha de tener en cuenta que muchas veces la forma de solucionar un
7. programa no es unica y por lo tanto puede y debe de haber personas
8. que difieran en la forma de expresar la solucion del mismo.
9.
10. el programa consiste en la entrega de un ticket con una numeración para la
11. atención al cliente tomando en cuenta si es Cliente (que posea cuenta en
12. un banco por ejemplo) o que NO sea Cliente del Banco.
13.
14. Para ello la numeración debe partir para los Clientes del 101 al 199
15. y para los No Clientes del 301 al 399.
16.
17. El orden de atención al cliente se ha de efectuar de la siguiente manera:
18.
19. 1 - Debe existir una opción en el menú para seleccionar si el usuario
20. es Cliente o No Cliente.
21.
22. 2 - Además el menú contara con una opción para el cajero, siendo este pulsado
23. para saber cuál de los clientes será atendido, tomando en cuenta los
24. siguientes criterios:
25.
26. a - Si existen más de diez (10) No Clientes y menos de
27. cinco (5) Clientes se atenderán a dos (2) No Clientes
28. y a un Cliente.
29. b - Si existen más de quince (15) Clientes y menos de
30. ocho (8) No Clientes el procedimiento es:
31. por cada tres (3) Clientes se atiende a un No Cliente.
32. c - Y de no encontrarse dentro de estas condiciones se atenderá a
33. uno de cada tipo, es decir, por cada Cliente a un No Cliente.
34.
35. se ha de tener en cuenta que a veces el programa dara la sensacion de que
36. se esta equivocando al dar el ticket corespondiente a un cliente o no, esto
37. es debido a que el usuario no ha especificado si cuando los valores
38. correspondientes a clientes y no clientes determinan la inicializacion de
39. los correspondientes contadores o en su lugar se mantienen para mantener el
40. orden indendientemente del cambio de condicional.
41.
42. */
43.
44. #include <stdio.h>
45. #include <stdlib.h>
46.
47. int main(int argc, char *argv[])
48. {
49. int SiCliente=0;
50. int NoCliente=0;
51.
52. int NumeracionSiCliente=101;
53. int NumeracionNoCliente=301;
54.
55. int opcion=0;
56.
57.
58. int CuantosClientes=0;
59. int CuantosNoClientes=0;
60.
61. do {
62. printf("\n1.- Si Cliente");
63. printf("\n2.- No Cliente");
64. printf("\n3.- CAJERO");
65. printf("\n0.- Salir");
66. printf("\n-------------------------------------------------------------");
67. printf("\nNo Clientes : %d * Si Clientes : %d",NoCliente,SiCliente);
68. printf("\nNumeracion Si Clientes: %d",NumeracionSiCliente);
69. printf("\nNumeracion No Clientes: %d",NumeracionNoCliente);
70. printf("\n-------------------------------------------------------------\n");
71. scanf(" %d",&opcion);
72. switch(opcion) {
73. case 1:
74. SiCliente++;
75. break;
76. case 2:
77. NoCliente++;
78. break;
79. case 3:
80. // Si existe algun tipo de cliente se da numero al cajero
81. if(SiCliente>0 || NoCliente>0) {
82. // Se comprueba primera condicion
83. if(SiCliente>15 && NoCliente<8) {
84. if(CuantosClientes>3) {
85. // Se visualiza un no cliente
86. printf("No Cliente No. %d",NumeracionNoCliente++);
87. CuantosClientes=0;
88. NoCliente--;
89. } else {
90. // Se han de visualizar tres clientes
91. printf("Si Cliente No. %d",NumeracionSiCliente++);
92. CuantosClientes++;
93. SiCliente--;
94. }
95. // Segunda condicion
96. } else if(SiCliente<5 && NoCliente>10) {
97. if(CuantosNoClientes>2) {
98. // Se visualiza un cliente
99. printf("Si Cliente No. %d",NumeracionSiCliente++);
100. CuantosNoClientes=0;
101. SiCliente--;
102. } else {
103. // Se han de visualizar dos no clientes
104. printf("No Cliente No. %d",NumeracionNoCliente++);
105. CuantosNoClientes++;
106. NoCliente--;
107. }
108. } else {
109. // Cualquier otra condicion se ha de visualizar un cliente
110. // y un no cliente
111. if(SiCliente>0 && NoCliente>0) {
112. if(CuantosClientes>1) {
113. // se visualiza un no cliente
114. printf("No Cliente No. %d",NumeracionNoCliente++);
115. CuantosClientes=0;
116. NoCliente--;
117. } else {
118. // se visualiza un cliente
119. printf("Si Cliente No. %d",NumeracionSiCliente++);
120. CuantosClientes++;
121. SiCliente--;
122. }
123. } else if(SiCliente==0 && NoCliente>0) {
124. // Se visualiza un no cliente
125. printf("No Cliente No. %d",NumeracionNoCliente++);
126. CuantosClientes=0;
127. NoCliente--;
128. } else if(SiCliente>0 && NoCliente==0) {
129. // se visualiza un cliente
130. printf("Si Cliente No. %d",NumeracionSiCliente++);
131. CuantosClientes++;
132. SiCliente--;
133. }
134. }
135. if(NumeracionNoCliente>399) NumeracionNoCliente=301;
136. if(NumeracionSiCliente>199) NumeracionSiCliente=101;
137. if(NoCliente<0) NoCliente=0;
138. if(SiCliente<0) SiCliente=0;
139. }
140. break;
141. }
142. } while(opcion!=0);
143.
144.
145.
146. system("PAUSE");
147. return 0;
148. }

Vous aimerez peut-être aussi