fork download
  1. /******************************************************************************
  2.  
  3. Welcome to GDB Online.
  4. GDB online is an online compiler and debugger tool for C/C++.
  5. Code, Compile, Run and Debug online from anywhere in world.
  6.  
  7. *******************************************************************************/
  8. #include <stdio.h>
  9.  
  10. int main() {
  11. float precioHora, bono, ivaPorcentaje;
  12. int horasMinimas;
  13.  
  14. int empleados = 0;
  15. int conBono = 0;
  16. int sinBono = 0;
  17.  
  18. float nominaTotal = 0;
  19. float ivaTotal = 0;
  20. float ivaBono = 0;
  21. float ivaNoBono = 0;
  22.  
  23. char nombre[50];
  24. int horas;
  25. float neto, iva, total;
  26. char seguir;
  27.  
  28. // Datos generales
  29. printf("Ingrese el precio por hora trabajada: ");
  30. scanf("%f", &precioHora);
  31.  
  32. printf("Ingrese el mínimo de horas semanales requeridas: ");
  33. scanf("%d", &horasMinimas);
  34.  
  35. printf("Ingrese el porcentaje de IVA: ");
  36. scanf("%f", &ivaPorcentaje);
  37.  
  38. printf("Ingrese el valor del bono: ");
  39. scanf("%f", &bono);
  40.  
  41. do {
  42. getchar(); // limpiar buffer
  43.  
  44. printf("Nombre del empleado: ");
  45. fgets(nombre, sizeof(nombre), stdin);
  46. // quitar salto de línea
  47. int i = 0;
  48. while (nombre[i] != '\0') {
  49. if (nombre[i] == '\n') {
  50. nombre[i] = '\0';
  51. break;
  52. }
  53. i++;
  54. }
  55.  
  56. printf("Horas trabajadas por %s: ", nombre);
  57. scanf("%d", &horas);
  58.  
  59. // Cálculos
  60. neto = precioHora * horas;
  61. iva = neto * ivaPorcentaje / 100;
  62. total = neto + iva;
  63.  
  64. if (horas >= horasMinimas) {
  65. total += bono;
  66. conBono++;
  67. ivaBono += iva;
  68. } else {
  69. sinBono++;
  70. ivaNoBono += iva;
  71. }
  72.  
  73. empleados++;
  74. nominaTotal += total;
  75. ivaTotal += iva;
  76.  
  77. // Mostrar recibo
  78. printf("--- Recibo para %s ---\n", nombre);
  79. printf("Valor neto: $%.2f\n", neto);
  80. printf("IVA aplicado: $%.2f\n", iva);
  81. printf("Total a pagar: $%.2f\n", total);
  82.  
  83. getchar(); // limpiar buffer
  84. printf("¿Desea ingresar otro empleado? (s/n): ");
  85. scanf("%c", &seguir);
  86.  
  87. } while (seguir == 's' || seguir == 'S');
  88.  
  89. // Promedios
  90. float promIVABono = (conBono > 0) ? ivaBono / conBono : 0;
  91. float promIVANoBono = (sinBono > 0) ? ivaNoBono / sinBono : 0;
  92. float promIVA = (empleados > 0) ? ivaTotal / empleados : 0;
  93. float promTotal = (empleados > 0) ? nominaTotal / empleados : 0;
  94.  
  95. // Resumen
  96. printf("\n===== RESUMEN FINAL =====\n");
  97. printf("Total de empleados: %d\n", empleados);
  98. printf("Con bono: %d\n", conBono);
  99. printf("Sin bono: %d\n", sinBono);
  100. printf("Valor total de la nómina: $%.2f\n", nominaTotal);
  101.  
  102. printf("\n--- PROMEDIOS ---\n");
  103. printf("Promedio IVA con bono: $%.2f\n", promIVABono);
  104. printf("Promedio IVA sin bono: $%.2f\n", promIVANoBono);
  105. printf("Promedio general de IVA: $%.2f\n", promIVA);
  106. printf("Promedio total pagado por empleado: $%.2f\n", promTotal);
  107.  
  108. return 0;
  109. }
Success #stdin #stdout 0.01s 5312KB
stdin
45
stdout
Ingrese el precio por hora trabajada: Ingrese el mínimo de horas semanales requeridas: Ingrese el porcentaje de IVA: Ingrese el valor del bono: Nombre del empleado: Horas trabajadas por : --- Recibo para  ---
Valor neto: $0.00
IVA aplicado: $0.00
Total a pagar: $0.00
¿Desea ingresar otro empleado? (s/n): 
===== RESUMEN FINAL =====
Total de empleados: 1
Con bono: 1
Sin bono: 0
Valor total de la nómina: $0.00

--- PROMEDIOS ---
Promedio IVA con bono: $0.00
Promedio IVA sin bono: $0.00
Promedio general de IVA: $0.00
Promedio total pagado por empleado: $0.00