#include <stdio.h>
#include <stdlib.h>
#define SUELDO_BASE 800.0
float calcular_sueldo_total(int prendas_vendidas);
int leer_entrada_valida();
void ordenar_array_descendente(int *array, int size);
float calcular_sueldo_semanal(int ventas[], int num_dias);
int main() {
int ventas_semanales[7]; // Arreglo para almacenar ventas diarias de una semana
float sueldo_semanal;
printf("Ingrese las ventas diarias para cada uno de los 7 días de la semana:\n"); for (int i = 0; i < 7; i++) {
ventas_semanales[i] = leer_entrada_valida();
}
// Ordenar las ventas de mayor a menor
ordenar_array_descendente(ventas_semanales, 7);
// Imprimir ventas ordenadas
printf("\nVentas diarias ordenadas de mayor a menor:\n"); for (int i = 0; i < 7; i++) {
printf("Día %d: %d prendas\n", i
+ 1, ventas_semanales
[i
]); }
// Calcular el sueldo semanal
sueldo_semanal = calcular_sueldo_semanal(ventas_semanales, 7);
// Imprimir sueldo total de la semana
printf("\nEl sueldo total semanal es: $%.2f\n", sueldo_semanal
);
return 0;
}
float calcular_sueldo_total(int prendas_vendidas) {
float ganancias = 0;
if (prendas_vendidas >= 1 && prendas_vendidas <= 2) {
ganancias = prendas_vendidas * 10;
} else if (prendas_vendidas >= 3 && prendas_vendidas <= 8) {
ganancias = prendas_vendidas * 25;
} else if (prendas_vendidas >= 9 && prendas_vendidas <= 12) {
ganancias = prendas_vendidas * 45;
} else if (prendas_vendidas >= 13 && prendas_vendidas <= 18) {
ganancias = prendas_vendidas * 70;
} else if (prendas_vendidas > 18) {
ganancias = prendas_vendidas * 80;
}
return SUELDO_BASE + ganancias;
}
int leer_entrada_valida() {
int prendas_vendidas;
char input[100];
char *endptr;
while (1) {
printf("Ingrese el número de prendas vendidas: "); if (fgets(input
, sizeof(input
), stdin
) == NULL
) { printf("Error al leer la entrada. Intente de nuevo.\n"); continue;
}
prendas_vendidas
= strtol(input
, &endptr
, 10);
if (endptr == input || *endptr != '\n') {
printf("Entrada inválida. Por favor, ingrese un número entero.\n"); } else if (prendas_vendidas < 0) {
printf("Por favor, ingrese un número no negativo de prendas.\n"); } else {
break;
}
}
return prendas_vendidas;
}
void ordenar_array_descendente(int *array, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (array[j] > array[i]) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
float calcular_sueldo_semanal(int ventas[], int num_dias) {
float sueldo_total_semanal = 0;
for (int i = 0; i < num_dias; i++) {
sueldo_total_semanal += calcular_sueldo_total(ventas[i]);
}
return sueldo_total_semanal;
}