[ Foro de C ]

Problema con maximos y minimos

12-Nov-2022 13:45
Invitado (Brian)
1 Respuestas

Buenas, estoy atorado con un ejercicio de maximos y minimos y no lo puedo resolver. El ejercicio dice asi: Ingresar los sueldos y nombres de 30 empleados, indicar e imprimir el sueldo mayor y a quién pertenece.

Este es mi codigo:

char empleados[30];
int sueldos;
char sueldoEmpleados;
int max;
int min;
int cont;
int i;


for(i=0;i<3;i++){

printf("Ingrese el nombre del empleado: \n");
fgets(empleados,30,stdin);

printf("Ingrese su sueldo: \n");
scanf("%d",&sueldos);
fflush(stdin);

if(cont==1){
max=sueldos;
min=sueldos;
}
else if(sueldos>max){
max=sueldos;
}
else if(sueldos<min){
min=sueldos;
}

cont++;
}

printf("El sueldo maximo es de %d y pertenece al empleado %s",max, empleados);

Siempre que lo ejecuto me muestra el ultimo empleado, no me muestra a quien pertenece el sueldo maximo


22-Nov-2022 23:21
Invitado (luis)

hola brian

te paso una posible solución:
#include <stdio.h>
#include <string.h>

#define TAM_LISTA 5
#define LONG_EMPL 30

typedef struct s_empleado
{
   char nombre[LONG_EMPL];
   int sueldo;
} t_empleado;

int main(void)
{
   t_empleado empleado[TAM_LISTA];
   int mejor_empleado = 0;

   for(int i=0; i<TAM_LISTA; i++)
   {
       printf("\nIngrese el nombre del empleado: \n");
       fgets(empleado[i].nombre,LONG_EMPL,stdin);
       setbuf(stdin,NULL);
       
       printf("Ingrese su sueldo: \n");
       scanf("%d",&empleado[i].sueldo);
       setbuf(stdin,NULL);
       
       if(empleado[i].sueldo > empleado[mejor_empleado].sueldo)
       {
          mejor_empleado = i;
       }
   }
   
   // varios empleados pueden tener el mejor sueldo
   printf("\n\nQuien más cobra en la empresa:\n\n");
   for(int i=mejor_empleado; i<TAM_LISTA; i++)
   {
       if(empleado[i].sueldo == empleado[mejor_empleado].sueldo)
       {
           printf("%s cobra: %d\n\n",
                  empleado[i].nombre, empleado[i].sueldo);
       }
   }
}

suerte ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)