elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con ejercicio novato
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con ejercicio novato  (Leído 2,068 veces)
ascuasflame

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ayuda con ejercicio novato
« en: 9 Enero 2018, 00:19 am »

Muy buenas,

El ejercicio en c++ es el siguiente:

1.Haz un programa que calcule el reparto del bote de un restaurante teniendo en cuenta que los repartidores obtienen un 30% de su parte del bote proporcionalmente a las horas trabajadas, mientras que los camareros obtienen de su parte el 100%. Desconocemos el numero de camareros y el de repartidores por ello se debe pedir al usuario cuantos hay de ellos. Claramente el bote se reparte de manera alícuota a las horas trabajadas, hay que pedirle al usuario cuantas horas trabaja cada empleado. Finalmente se debe mostrar el nombre del trabajador y lo que le corresponde de bote

Me está partiendo la cabeza y no sé cómo desarrollarlo.
Muchas gracias, espero vuestras respuestas, me ayudaría muchísimo.


« Última modificación: 9 Enero 2018, 01:50 am por ascuasflame » En línea

ascuasflame

Desconectado Desconectado

Mensajes: 5


Ver Perfil
hecho
« Respuesta #1 en: 9 Enero 2018, 04:57 am »

Ya lo hice, el único problema es que no puedo establecer un numero infinito de camareros o repatidores porque despues es imposible guardarlos en un cin >>.

Aqui está:

[MOD] usar etiquetas GeSHi para publicar código.



Código
  1.  
  2. #include <iostream>
  3. #include <conio.h>
  4. #include <string.h>
  5. using namespace std;
  6. int main()
  7. {
  8.  
  9.  
  10. /*
  11. 1.Haz un programa que calcule el reparto del bote de un restaurante teniendo en cuenta que los repartidores obtienen un 30% de su parte del bote proporcionalmente a las horas trabajadas,
  12. mientras que los camareros obtienen de su parte el 100%. Desconocemos el numero de camareros y el de repartidores por ello se debe pedir al usuario cuantos hay de ellos. Claramente el bote
  13. se reparte de manera alícuota a las horas trabajadas, hay que pedirle al usuario cuantas horas trabaja cada empleado. Finalmente se debe mostrar el nombre del trabajador y lo que le corresponde
  14. de bote.
  15. */
  16. int numcam, numrep, totalhoras;
  17. float bote;
  18. char a[50], b[50], c[50], d[50], e[50], f[50], g[50], h[50], i[50];
  19. char z[50], x[50], w[50];
  20. float zz, xx, ww ;
  21. int aa, bb, cc, dd, ee, ff, gg, hh, ii ;
  22. float recibeaa, recibebb, recibecc, recibedd, recibeee, recibeff, recibegg, recibehh, recibeii;
  23. float dinerosinrestar1, dinerosinrestar2, dinerosinrestar3, newbote, loquetoca1,loquetoca2,loquetoca3, botefinal, horas;
  24.  
  25.  
  26.  
  27. cout << "Ingrese cantidad del bote: ", cin >> bote, cout << endl;
  28. cout << "Ingrese numero de repartidores: ", cin >> numrep, cout << endl; //maximo 3
  29. cout << "Ingrese numero de camareros: ", cin >> numcam, cout << endl; //maximo 9
  30. cout << "Ingrese numero total de horas trabajadas: ", cin >> totalhoras, cout << endl;
  31.  
  32. //ahora vamos con los repartidores
  33. switch (numrep){
  34. case 1: cout << "Ingrese nombre del primer repartidor: ", cin >> z, cout << endl;
  35. cout << "Ingrese horas trabajadas:  ", cin >> zz, cout << endl;
  36. break;
  37. case 2:cout << "Ingrese nombre del primer repartidor: ", cin >> z, cout << endl;
  38. cout << "Ingrese horas trabajadas:  ", cin >> zz, cout << endl;
  39. cout << "Ingrese nombre del segundo repartidor: ", cin >> x, cout << endl;
  40. cout << "Ingrese horas trabajadas:  ", cin >> xx, cout << endl;
  41. break;
  42. case 3:cout << "Ingrese nombre del primer repartidor: ", cin >> z, cout << endl;
  43. cout << "Ingrese horas trabajadas:  ", cin >> zz, cout << endl;
  44. cout << "Ingrese nombre del segundo repartidor: ", cin >> x, cout << endl;
  45. cout << "Ingrese horas trabajadas:  ", cin >> xx, cout << endl;
  46. cout << "Ingrese nombre del tercer repartidor: ", cin >> w, cout << endl;
  47. cout << "Ingrese horas trabajadas:  ", cin >> ww, cout << endl;
  48. break;
  49. default: cout << "El máximo de repartidores es 3";
  50. }
  51.  
  52. // camareros
  53. switch (numcam){
  54. case 1: cout << "Ingrese nombre del primer camarero: ", cin >> a, cout << endl; break;
  55. cout << "Ingrese horas trabajadas:  ", cin >> aa, cout << endl;
  56. break;
  57. case 2:cout << "Ingrese nombre del primer camarero: ", cin >> a, cout << endl;
  58. cout << "Ingrese horas trabajadas:  ", cin >> aa, cout << endl;
  59. cout << "Ingrese nombre del segundo camarero: ", cin >> b, cout << endl;
  60. cout << "Ingrese horas trabajadas:  ", cin >> bb, cout << endl;
  61. break;
  62. case 3:
  63. cout << "Ingrese nombre del primer camarero: ", cin >> a, cout << endl;
  64. cout << "Ingrese horas trabajadas:  ", cin >> aa, cout << endl;
  65. cout << "Ingrese nombre del segundo camarero: ", cin >> b, cout << endl;
  66. cout << "Ingrese horas trabajadas:  ", cin >> bb, cout << endl;
  67. cout << "Ingrese nombre del tercer camarero: ", cin >> c, cout << endl;
  68. cout << "Ingrese horas trabajadas:  ", cin >> cc, cout << endl;
  69. break;
  70. case 4:cout << "Ingrese nombre del primer camarero: ", cin >> a, cout << endl;
  71. cout << "Ingrese horas trabajadas:  ", cin >> aa, cout << endl;
  72. cout << "Ingrese nombre del segundo camarero: ", cin >> b, cout << endl;
  73. cout << "Ingrese horas trabajadas:  ", cin >> bb, cout << endl;
  74. cout << "Ingrese nombre del tercer camarero: ", cin >> c, cout << endl;
  75. cout << "Ingrese horas trabajadas:  ", cin >> cc, cout << endl;
  76. cout << "Ingrese nombre del cuarto camarero: ", cin >> d, cout << endl;
  77. cout << "Ingrese horas trabajadas:  ", cin >> dd, cout << endl;
  78. break;
  79. case 5: cout << "Ingrese nombre del primer camarero: ", cin >> a, cout << endl;
  80. cout << "Ingrese horas trabajadas:  ", cin >> aa, cout << endl;
  81. cout << "Ingrese nombre del segundo camarero: ", cin >> b, cout << endl;
  82. cout << "Ingrese horas trabajadas:  ", cin >> bb, cout << endl;
  83. cout << "Ingrese nombre del tercer camarero: ", cin >> c, cout << endl;
  84. cout << "Ingrese horas trabajadas:  ", cin >> cc, cout << endl;
  85. cout << "Ingrese nombre del cuarto camarero: ", cin >> d, cout << endl;
  86. cout << "Ingrese horas trabajadas:  ", cin >> dd, cout << endl;
  87. cout << "Ingrese nombre del quinto camarero: ", cin >> e, cout << endl;
  88. cout << "Ingrese horas trabajadas:  ", cin >> ee, cout << endl;
  89. break;
  90. case 6: cout << "Ingrese nombre del primer camarero: ", cin >> a, cout << endl;
  91. cout << "Ingrese horas trabajadas:  ", cin >> aa, cout << endl;
  92. cout << "Ingrese nombre del segundo camarero: ", cin >> b, cout << endl;
  93. cout << "Ingrese horas trabajadas:  ", cin >> bb, cout << endl;
  94. cout << "Ingrese nombre del tercer camarero: ", cin >> c, cout << endl;
  95. cout << "Ingrese horas trabajadas:  ", cin >> cc, cout << endl;
  96. cout << "Ingrese nombre del cuarto camarero: ", cin >> d, cout << endl;
  97. cout << "Ingrese horas trabajadas:  ", cin >> dd, cout << endl;
  98. cout << "Ingrese nombre del quinto camarero: ", cin >> e, cout << endl;
  99. cout << "Ingrese horas trabajadas:  ", cin >> ee, cout << endl;
  100. cout << "Ingrese nombre del sexto camarero: ", cin >> f, cout << endl;
  101. cout << "Ingrese horas trabajadas:  ", cin >> ff, cout << endl;
  102. break;
  103. case 7:cout << "Ingrese nombre del primer camarero: ", cin >> a, cout << endl;
  104. cout << "Ingrese horas trabajadas:  ", cin >> aa, cout << endl;
  105. cout << "Ingrese nombre del segundo camarero: ", cin >> b, cout << endl;
  106. cout << "Ingrese horas trabajadas:  ", cin >> bb, cout << endl;
  107. cout << "Ingrese nombre del tercer camarero: ", cin >> c, cout << endl;
  108. cout << "Ingrese horas trabajadas:  ", cin >> cc, cout << endl;
  109. cout << "Ingrese nombre del cuarto camarero: ", cin >> d, cout << endl;
  110. cout << "Ingrese horas trabajadas:  ", cin >> dd, cout << endl;
  111. cout << "Ingrese nombre del quinto camarero: ", cin >> e, cout << endl;
  112. cout << "Ingrese horas trabajadas:  ", cin >> ee, cout << endl;
  113. cout << "Ingrese nombre del sexto camarero: ", cin >> f, cout << endl;
  114. cout << "Ingrese horas trabajadas:  ", cin >> ff, cout << endl;
  115. cout << "Ingrese nombre del septimo camarero: ", cin >> g, cout << endl;
  116. cout << "Ingrese horas trabajadas:  ", cin >> gg, cout << endl;
  117. break;
  118. case 8:cout << "Ingrese nombre del primer camarero: ", cin >> a, cout << endl;
  119. cout << "Ingrese horas trabajadas:  ", cin >> aa, cout << endl;
  120. cout << "Ingrese nombre del segundo camarero: ", cin >> b, cout << endl;
  121. cout << "Ingrese horas trabajadas:  ", cin >> bb, cout << endl;
  122. cout << "Ingrese nombre del tercer camarero: ", cin >> c, cout << endl;
  123. cout << "Ingrese horas trabajadas:  ", cin >> cc, cout << endl;
  124. cout << "Ingrese nombre del cuarto camarero: ", cin >> d, cout << endl;
  125. cout << "Ingrese horas trabajadas:  ", cin >> dd, cout << endl;
  126. cout << "Ingrese nombre del quinto camarero: ", cin >> e, cout << endl;
  127. cout << "Ingrese horas trabajadas:  ", cin >> ee, cout << endl;
  128. cout << "Ingrese nombre del sexto camarero: ", cin >> f, cout << endl;
  129. cout << "Ingrese horas trabajadas:  ", cin >> ff, cout << endl;
  130. cout << "Ingrese nombre del septimo camarero: ", cin >> g, cout << endl;
  131. cout << "Ingrese horas trabajadas:  ", cin >> gg, cout << endl;
  132. cout << "Ingrese nombre del octavo camarero: ", cin >> h, cout << endl;
  133. cout << "Ingrese horas trabajadas:  ", cin >> hh, cout << endl;
  134. break;
  135. case 9:cout << "Ingrese nombre del primer camarero: ", cin >> a, cout << endl;
  136. cout << "Ingrese horas trabajadas:  ", cin >> aa, cout << endl;
  137. cout << "Ingrese nombre del segundo camarero: ", cin >> b, cout << endl;
  138. cout << "Ingrese horas trabajadas:  ", cin >> bb, cout << endl;
  139. cout << "Ingrese nombre del tercer camarero: ", cin >> c, cout << endl;
  140. cout << "Ingrese horas trabajadas:  ", cin >> cc, cout << endl;
  141. cout << "Ingrese nombre del cuarto camarero: ", cin >> d, cout << endl;
  142. cout << "Ingrese horas trabajadas:  ", cin >> dd, cout << endl;
  143. cout << "Ingrese nombre del quinto camarero: ", cin >> e, cout << endl;
  144. cout << "Ingrese horas trabajadas:  ", cin >> ee, cout << endl;
  145. cout << "Ingrese nombre del sexto camarero: ", cin >> f, cout << endl;
  146. cout << "Ingrese horas trabajadas:  ", cin >> ff, cout << endl;
  147. cout << "Ingrese nombre del septimo camarero: ", cin >> g, cout << endl;
  148. cout << "Ingrese horas trabajadas:  ", cin >> gg, cout << endl;
  149. cout << "Ingrese nombre del octavo camarero: ", cin >> h, cout << endl;
  150. cout << "Ingrese horas trabajadas:  ", cin >> hh, cout << endl;
  151. cout << "Ingrese nombre del noveno camarero: ", cin >> i, cout << endl;
  152. cout << "Ingrese horas trabajadas:  ", cin >> ii, cout << endl;
  153. break;
  154. default: cout << "El número máximo es 9" << endl;
  155. }
  156. if (numrep == 1){
  157.    loquetoca1 =  bote * 0.3;
  158.    newbote = loquetoca1;
  159.    botefinal = bote - newbote;
  160. cout << z << " Recibe " << loquetoca1 << " €" << endl;
  161. }
  162. else if (numrep == 2){
  163. loquetoca1 =  bote * 0.3;
  164. loquetoca2 =  bote * 0.3;
  165. newbote = loquetoca1 + loquetoca2;
  166. botefinal = bote - newbote;
  167. cout << z << " Recibe " << loquetoca1 << " €" << endl;
  168. cout << x << " Recibe " << loquetoca2 << " €" << endl;
  169. }
  170. else if (numrep == 3){
  171. loquetoca1 =  bote * 0.3;
  172. loquetoca2 =  bote * 0.3;
  173. loquetoca3 =  bote * 0.3;
  174. newbote = loquetoca1 + loquetoca2 +loquetoca3;
  175. botefinal = bote - newbote;
  176. cout << z << " Recibe " << loquetoca1 << " €" << endl;
  177. cout << x << " Recibe " << loquetoca2 << " €" << endl;
  178. cout << w << " Recibe " << loquetoca3 << " €" << endl; }
  179.  
  180.  
  181.  
  182. if (numcam == 9){
  183.     horas = aa + bb + cc + dd + ee + ff + gg + hh + ii;
  184. recibeaa = (aa * botefinal) / horas;
  185. recibebb = (bb * botefinal) / horas;
  186. recibecc = (cc * botefinal) / horas;
  187. recibedd = (dd * botefinal) / horas;
  188. recibeee = (ee * botefinal) / horas;
  189. recibeff = (ff * botefinal) / horas;
  190. recibegg = (gg * botefinal) / horas;
  191. recibehh = (hh * botefinal) / horas;
  192. recibeii = (ii * botefinal) / horas;
  193. cout << a << " Recibe " << recibeaa << "€" << endl;
  194. cout << b << " Recibe " << recibebb << "€" << endl;
  195. cout << c << " Recibe " << recibecc << "€" << endl;
  196. cout << d << " Recibe " << recibedd << "€" << endl;
  197. cout << e << " Recibe " << recibeee << "€" << endl;
  198. cout << f << " Recibe " << recibeff << "€" << endl;
  199. cout << g << " Recibe " << recibegg << "€" << endl;
  200. cout << h << " Recibe " << recibehh << "€" << endl;
  201. cout << i << " Recibe " << recibeii << "€" << endl;
  202. }
  203. else if (numcam == 8){
  204.     horas = aa + bb + cc + dd + ee + ff + gg + hh;
  205. recibeaa = (aa * botefinal) / horas;
  206. recibebb = (bb * botefinal) / horas;
  207. recibecc = (cc * botefinal) / horas;
  208. recibedd = (dd * botefinal) / horas;
  209. recibeee = (ee * botefinal) / horas;
  210. recibeff = (ff * botefinal) / horas;
  211. recibegg = (gg * botefinal) / horas;
  212. recibehh = (hh * botefinal) / horas;
  213. cout << a << " Recibe " << recibeaa << "€" << endl;
  214. cout << b << " Recibe " << recibebb << "€" << endl;
  215. cout << c << " Recibe " << recibecc << "€" << endl;
  216. cout << d << " Recibe " << recibedd << "€" << endl;
  217. cout << e << " Recibe " << recibeee << "€" << endl;
  218. cout << f << " Recibe " << recibeff << "€" << endl;
  219. cout << g << " Recibe " << recibegg << "€" << endl;
  220. cout << h << " Recibe " << recibehh << "€" << endl;
  221. }
  222. else if (numcam == 7){
  223.    horas = aa + bb + cc + dd + ee + ff + gg;
  224. recibeaa = (aa * botefinal) / horas;
  225. recibebb = (bb * botefinal) / horas;
  226. recibecc = (cc * botefinal) / horas;
  227. recibedd = (dd * botefinal) / horas;
  228. recibeee = (ee * botefinal) / horas;
  229. recibeff = (ff * botefinal) / horas;
  230. recibegg = (gg * botefinal) / horas;
  231. cout << a << " Recibe " << recibeaa << "€" << endl;
  232. cout << b << " Recibe " << recibebb << "€" << endl;
  233. cout << c << " Recibe " << recibecc << "€" << endl;
  234. cout << d << " Recibe " << recibedd << "€" << endl;
  235. cout << e << " Recibe " << recibeee << "€" << endl;
  236. cout << f << " Recibe " << recibeff << "€" << endl;
  237. cout << g << " Recibe " << recibegg << "€" << endl;
  238. }
  239. else if (numcam == 6){
  240.    horas = aa + bb + cc + dd + ee + ff;
  241. recibeaa = (aa * botefinal) / horas;
  242. recibebb = (bb * botefinal) / horas;
  243. recibecc = (cc * botefinal) / horas;
  244. recibedd = (dd * botefinal) / horas;
  245. recibeee = (ee * botefinal) / horas;
  246. recibeff = (ff * botefinal) / horas;
  247. cout << a << " Recibe " << recibeaa << "€" << endl;
  248. cout << b << " Recibe " << recibebb << "€" << endl;
  249. cout << c << " Recibe " << recibecc << "€" << endl;
  250. cout << d << " Recibe " << recibedd << "€" << endl;
  251. cout << e << " Recibe " << recibeee << "€" << endl;
  252. cout << f << " Recibe " << recibeff << "€" << endl;
  253. }
  254. else if (numcam == 5){
  255.    horas = aa + bb + cc + dd + ee;
  256. recibeaa = (aa * botefinal) / horas;
  257. recibebb = (bb * botefinal) / horas;
  258. recibecc = (cc * botefinal) / horas;
  259. recibedd = (dd * botefinal) / horas;
  260. recibeee = (ee * botefinal) / horas;
  261. cout << a << " Recibe " << recibeaa << "€" << endl;
  262. cout << b << " Recibe " << recibebb << "€" << endl;
  263. cout << c << " Recibe " << recibecc << "€" << endl;
  264. cout << d << " Recibe " << recibedd << "€" << endl;
  265. cout << e << " Recibe " << recibeee << "€" << endl;
  266. }
  267. else if (numcam == 4){
  268.       horas = aa + bb + cc + dd;
  269. recibeaa = (aa * botefinal) / horas;
  270. recibebb = (bb * botefinal) / horas;
  271. recibecc = (cc * botefinal) / horas;
  272. recibedd = (dd * botefinal) / horas;
  273. cout << a << " Recibe " << recibeaa << "€" << endl;
  274. cout << b << " Recibe " << recibebb << "€" << endl;
  275. cout << c << " Recibe " << recibecc << "€" << endl;
  276. cout << d << " Recibe " << recibedd << "€" << endl;
  277. }
  278. else if (numcam == 3){
  279.    horas = aa + bb + cc;
  280. recibeaa = (aa * botefinal) / horas;
  281. recibebb = (bb * botefinal) / horas;
  282. recibecc = (cc * botefinal) / horas;
  283. cout << a << " Recibe " << recibeaa << "€" << endl;
  284. cout << b << " Recibe " << recibebb << "€" << endl;
  285. cout << c << " Recibe " << recibecc << "€" << endl;
  286. }
  287. else if (numcam == 2){
  288.    horas = aa + bb;
  289. recibeaa = (aa * botefinal) / horas;
  290. recibebb = (bb * botefinal) / horas;
  291. cout << a << " Recibe " << recibeaa << "€" << endl;
  292. cout << b << " Recibe " << recibebb << "€" << endl;
  293. }
  294. else if (numcam == 1){
  295.    horas = aa;
  296. recibeaa = (aa * botefinal) / horas;
  297. cout << a << " Recibe " << recibeaa << "€" << endl;
  298. }
  299.  
  300. return 0;
  301. }
  302.  
  303.  


« Última modificación: 9 Enero 2018, 06:50 am por simorg » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda con ejercicio novato
« Respuesta #2 en: 9 Enero 2018, 14:28 pm »

Creo que te piden que hagas arrays dinámicos y estructuras. No creo, por el enunciado, que debas hacer decenas de variables diferentes.
En línea

dijsktra

Desconectado Desconectado

Mensajes: 110


Mr Edsger Dijsktra (Tribute to)


Ver Perfil
Re: Ayuda con ejercicio novato
« Respuesta #3 en: 3 Febrero 2018, 15:52 pm »

A ver, campeón, que te has liado mucho!
Piensa que no se trata de hacer una aplicación profesional, sino un sencillo algoritmo de cómputo de partes aliquotas con una pequeña variación según sea repartidor o camarero!

En mi solución el "nombre" del trabajador es un entero 1, 2... No aporta nada a la metáfora añadir identificadores de tipo string... si hubieras puesto algun caso de salida, lo habría hecho.

Ahí te va mi solución:
  • Si estás en un curso introductorio de programación, no hagas caso de los comentarios formales.
    Están ahí para controlar los valores del algoritmo. Pero eso es otro "subject".
  • Importante : He optado por soluciones enteras (int), no float... 100/30 (el inverso de 30/100) no es 3, sino un poco mas,  pero a este nivel de programación, los floats de C tampoco representan correctamente 100/30 . O sea que tambien es "impreciso" usar float. Eso hara que el redondeo de los pesos de los repartidores sea al alza (mira despues el ejemplo)
  • Basicamente, se distinguen repartidores de camareros por el identificador n<D y n>=D
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. #define MAX 1000
  7.  
  8. /*
  9.   P : T,W,D >= 0 ,
  10.       \forall i : 0 <= i < (W+D) : HH[i]>= 0
  11.       H = \sum i : 0 <= i < (W+D) : HH[i]
  12.   Q : \forall i : 0 <= i < (W+D) : TT[i] = RATED_TIP(T,H,i,D)
  13.       where
  14.         RATED_TIP(T,H,i,D) ::= T*(HH[n]/H)*0.30^(i<D)));
  15.  
  16.   I : Q[(W+D)/n] and 0 <= n <= (W+D)
  17.   O(n)
  18. */
  19. void computeTip(const int T,const int H,
  20. const int D, const int W,
  21.                const int HH[], int TT[])
  22. {
  23.  for (int n=0; n<(W+D) ; n++)
  24.    TT[n] = (T*HH[n])/(H*((n<D)?(100/30):1));
  25. }
  26. int main(int argc, char *args[])
  27. {
  28.  int T,D,W,H ;
  29.  int HH[MAX];
  30.  int TT[MAX];
  31.  int n;
  32.  cin >> T >> D >> W ; // Tip,Dispatchers,Waiters
  33.  for (n=H=0; n < W+D ; n++)  { cin >> HH[n] ; H+=HH[n] ;}
  34.  computeTip(T,H,D,W,HH,TT);
  35.  for (n=0; n < W+D ; n++)  cout << n << " " << TT[n] << endl;  
  36. }
  37.  

Aqui van algunas muestras, siguiendo un protocolo de entrada, que es el que se suele seguir en os concursos de programación.

Primero, el bote a repartir , despues el numero de repartidores, despues el numero de camareros.
En el siguiente renglon, las horas de cada repartidor y en el siguiente renglón , las horas de cada camarero.

Código:
100 3 1
1 1 1
1

Resultado. Se han trabajado 4 horas. El camarero 1, al 100% de la parte aliquota (25), le da 25. Si los repartidores fueran al 100% también tendrían 25 cada uno, pero como van al 30%, se llevan 25*0.3=7.5 , que redodeado es 8.
Código:
0 8
1 8
2 8
3 25

Ahora los tres trabajadores trabajan cada 1 una hora y el camarero, nada...

Código:
18 3 1
1 1 1
0
El camarero, como no ha trabajado, no cobra. Si cada camarero estuviera al 100% de su parte aliquota
(6), cobraría 6, pero como esta al 30%, cobra 6*0.3=1.8, que redondeado queda dos...

Código:
0 2
1 2
2 2
3 0

Casos exactos. Sin redondeo. Ahora no hay camareros, solo 2 repartidores. Entonces no hay tercera linea de entrada
Código:
90 2 0
4 2

El segundo repartidor , si tuviese la parte aliqyita del bote cobraria 30. Cmo esta al 30% cobra 10. Logicamente el primer repartidor ha trabajado el doble, pues cobra el doble, 20.
Código:
0 20
1 10


Y ultimo caso!. Un  repartidor y dos camareros se erparten un bote de 100.
Código:
100 1 2
4
8 4


 El prrimer camarero ha trabajado la mitad de las horas , al 100%, por lo que se queda 50. El segundo ha trabjado la mitad del primero, pues cobra la mitad, 25. El reartidor habria cobrado 25 también al 100%, pero como está al 30%, cobra 8... (redondeo de 7.5)

Código:
0 8
1 50
2 25

Ah! Se me olvidaba... Yo tampoco puedo recoger "infinitos" camareros con cin.. Pero hasta 1000, si podría...

Te pongo 30 repartidores y 30 camareros, con un bote de  15000... Pero te toca a ti, comprobar si está bien  ;D
Código:
15000 30 30
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
30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Es broma... Las anotaciones que pongo en la especificación comprueban que el algoritmo es correcto (salvo el error arrastrado por el redondeo)  para _cualquier_ valor de N...por grande que sea
Código:
0 5
1 10
2 16
3 21
4 26
5 32
6 37
7 43
8 48
9 53
10 59
11 64
12 69
13 75
14 80
15 86
16 91
17 96
18 102
19 107
20 112
21 118
22 123
23 129
24 134
25 139
26 145
27 150
28 155
29 161
30 483
31 467
32 451
33 435
34 419
35 403
36 387
37 370
38 354
39 338
40 322
41 306
42 290
43 274
44 258
45 241
46 225
47 209
48 193
49 177
50 161
51 145
52 129
53 112
54 96
55 80
56 64
57 48
58 32
59 16


« Última modificación: 4 Febrero 2018, 12:16 pm por dijsktra » En línea

Si la depuración es el proceso de eliminar fallos en el software, entonces programar debe ser el proceso de ponerlos dentro. (Edsger Dijsktra)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con C++, Ejercicio Simple [Soy Novato]
Programación C/C++
xmbeat92 3 4,854 Último mensaje 1 Octubre 2010, 07:47 am
por xmbeat92
Ayuda ejercicio de Pascal, cuando uno no lo ve claro pide ayuda
Programación General
manu3742 1 3,274 Último mensaje 31 Marzo 2011, 15:43 pm
por d(-_-)b
[PYTHON] Ejercicio de novato
Ejercicios
K4sS- 2 4,042 Último mensaje 3 Octubre 2013, 15:34 pm
por zimmerman
Ejercicio de novato en Python3
Ejercicios
Itzhack 3 3,056 Último mensaje 24 Septiembre 2014, 16:35 pm
por Itzhack
Ayuda para novato en python (no es un ejercicio)
Scripting
YuanO 0 1,753 Último mensaje 2 Junio 2022, 07:39 am
por YuanO
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines