Holas a todos, espero que esten bien, mi siguiente problema es que al compilar el programa solamente me muestra lo primero pero lo que son los for lo omite finalizando el programa.
(https://i.imgur.com/PovFmXZ.png)
este es el código
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef char cadena[50];
struct RegistroFecha
{
int day;
int month;
int year;
};
struct RegistroEmpleado
{
int legajo;
cadena apynom;
cadena cargo;
float sueldo;
RegistroFecha ingreso;
RegistroFecha born;
};
const int employer = 10;
main()
{
int N=0;
RegistroEmpleado vec[employer];
printf("\nIngrese la cantidad de empleados: ");scanf("%d",&N);
for(int i=0;N<=i;i++)
{
system("cls");
printf("\nEmpleado Nro %d", i+1);
printf("\nLegajo: ");scanf("%d",&vec[i].legajo);
printf("\nApellido y nombre: "); _flushall();gets(vec[i].apynom);
printf("\nCargo: "); _flushall();gets(vec[i].cargo);
printf("\nSueldo: ");scanf("%f",&vec[i].sueldo);
printf("\n**Fecha de ingreso**: ");
printf("\nDia: ");scanf("%d",&vec[i]. ingreso.day);printf(" Mes: ");scanf("%d",&vec[i].ingreso.month);printf(" A%co");scanf("%d",&vec[i].ingreso.year);
printf("\n**Fecha de nacimiento**: ");
printf("\nDia: ");scanf("%d",&vec[i]. born.day);printf(" Mes: ");scanf("%d",&vec[i].born.month);printf(" A%co");scanf("%d",&vec[i].born.year);
}
for(int i=0;N<=i;i++)
{
printf("\nEmpleado Nro %d", i+1);
printf("\nLegajo: ",vec[i].legajo);
printf("\nApellido y nombre:" ,vec[i].apynom);
printf("\nCargo: ",vec[i].cargo);
printf("\nSueldo: ",vec[i].sueldo);
printf("\n**Fecha de ingreso**: ");
printf("\n%d/%d/%d" ,vec[i]. ingreso.day,vec[i].ingreso.month,vec[i].ingreso.year);
printf("\n**Fecha de nacimiento**: ");
printf("\n%d/%d/%d" ,vec[i]. born.day,vec[i].born.month,vec[i].born.year);
}
printf("\n\n");
system("pause");
}
Espero su ayuda, saludos cordiales.
No estoy seguro porque tengo C algo olvidado, pero intenta...
en vez de esto
for(int i=0;N<=i;i++)
{
declara la variable fuera del for, asi:
int i;
for( i=0; i<=N; i++)
{
...
}
y en el segundo bucle:
for( i=0; i<=N; i++)
{...}
y además supongo que lo de N<=i ¿es un lapsus? y querías poner i<=N
ya que de no ser así, en la primera iteración se cumpliría que N es mayor que i (si el usuario ha introducido un valor mayor que 0) y se saldría del bucle
En tu código tienes la condición "N<=i". Inicialmente, i vale 0 (es lo que has indicado en el for). N vale lo que el usuario haya introducido (en este ejemplo, 2). Entonces, la comparación inicial sería "2<=0". Como puedes ver, eso va a dar false. Por eso no se ejecuta el for.
Cita de: biestable en 30 Septiembre 2017, 08:14 AM
No estoy seguro porque tengo C algo olvidado, pero intenta...
en vez de esto
for(int i=0;N<=i;i++)
{
declara la variable fuera del for, asi:
int i;
for( i=0; i<=N; i++)
{
...
}
y en el segundo bucle:
for( i=0; i<=N; i++)
{...}
y además supongo que lo de N<=i ¿es un lapsus? y querías poner i<=N
ya que de no ser así, en la primera iteración se cumpliría que N es mayor que i (si el usuario ha introducido un valor mayor que 0) y se saldría del bucle
Respecto a eso, si que se permite declarar variables dentro del campo de inicialización del for en C (a partir de una versión que no recuerdo)
Lo mas probable es que sea por el standar con el que estas compilando...
Intenta usando
-std=c99
En la linea de comando cuando vallas a compilar.
O si no
--std=gnu99
En cualquier caso el declarar la variable dentro del for esta visto como "mala practica" por muchos (en C, para C++ esta bien) y lo que se recomienda es declarar todo al inicio del programa/función.