En que estoy mal?, al momento de ejecutar, omite el ultimo for y se queda congelado
AUTOR PREGUNTA #1
#include <iostream>
#include <string>
using namespace std;
struct Cnt_empl
{
char nombre[32];
int desemp_nota;
};
int main()
{
int num_empl,mejor_asist,i,j,k;
Cnt_empl *empleado = new Cnt_empl[num_empl];
//Meru------------------------------------------------------------------------
cout << " CNT ©Copyright-Derechos reservados." << endl;
cout << "----------------------------------------------------------------" << endl;
cout << " Desempeño de Asistencia de empleados " << endl;
cout << "----------------------------------------------------------------" << endl;
cout << " [Consola]: !Bienvenid@ al sistema! " << endl;
cout << " [Consola]: Ingrese el numero de empleados a evaluar " << endl;
cout << " [Usuario]: ";
cin >> num_empl;
cout << "----------------------------------------------------------------" << endl;
//puedes pasar de este menu--------------------------------------------------
for (i = 1; i <= num_empl; i++)
{
cout << " [Consola]: Ingrese el nombre del empleado #" << i << endl;
cout << " [Usuario]: ";
cin >> empleado[i].nombre;
cout << " [Consola]: Ingrese el desempeño de asistencia del empleado " << empleado[i].nombre << endl;
cout << " [Usuario]: ";
cin >> empleado[i].desemp_nota;
cout << "----------------------------------------------------------------" << endl;
}
for (i = 1; i <= num_empl; i++)
{
if (empleado[i].desemp_nota >= 7)
{
cout << " [Consola]: El empleado " << empleado[i].nombre << endl;
cout << " [Consola]: Tiene un desempeño de asistencia aceptable" << endl;
cout << "----------------------------------------------------------------" << endl;
}
else
{
cout << " [Consola]: El empleado " << empleado[i].nombre << endl;
cout << " [Consola]: se encuentra en periodo de prueba" << endl;
cout << "----------------------------------------------------------------" << endl;
}
}
for (i = 1; i <= num_empl; i++)
{
j = i+1;
k = i-1;
if (i >= num_empl){ j = num_empl; }
if (i = 1){ k = i; }
if ((empleado[i].desemp_nota >= empleado[j].desemp_nota) && (empleado[i].desemp_nota >= empleado[k].desemp_nota))
{
mejor_asist = i;
}
}
cout << " [Consola]: El empleado "<< empleado[mejor_asist].nombre << endl;
cout << " [Consola]: tiene el mejor desempeño de asistencia fue de "<< empleado[mejor_asist].desemp_nota << endl;
}
-
¿Tienes la misma pregunta? Yo también
Esto también te interesa!
PREGUNTAS SIMILARES
#2
Al revisar tu código, he detectado varios problemas que podrían ser el motivo de esos errores que te salen y no te termina de ejecutar bien.
1. Inicialización del array de empleados: El puntero `empleado` se inicializa con un tamaño `num_empl` que no ha sido inicializado antes. Es decir, estás creando un arreglo con un tamaño desconocido. Debes inicializar el arreglo después de haber obtenido el valor para `num_empl`.
```cpp
int num_empl;
cin >> num_empl;
Cnt_empl *empleado = new Cnt_empl[num_empl];
```
2. Los arrays en C++ comienzan en 0, no en 1. Si tienes un arreglo de tamaño `num_empl`, entonces el último elemento del arreglo tiene el índice `num_empl-1`.
Por lo tanto, tus bucles for deberían ser algo como:
```cpp
for (i = 0; i < num_empl; i++)
```
3. Lógica para encontrar el mejor desempeño**: Tu lógica para encontrar el empleado con el mejor desempeño es inadecuada. Deberías inicializar `mejor_asist` a `0` antes del bucle y luego, dentro del bucle, simplemente comparar cada `desemp_nota` con la del `mejor_asist` para ver si es mayor.
Ejemplo:
```cpp
mejor_asist = 0;
for (i = 1; i < num_empl; i++) {
if (empleado[i].desemp_nota > empleado[mejor_asist].desemp_nota) {
mejor_asist = i;
}
}
```
4. **Problema con el bucle de comparación**: La línea `if (i = 1)` está asignando el valor 1 a `i`. Debería ser `if (i == 1)` para hacer una comparación.
Tras corregir estos problemas, tu programa debería funcionar correctamente. Espero te sirva de ayuda.