Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Rhythmical en 30 Septiembre 2017, 06:43 AM

Título: No me compila el for en C
Publicado por: Rhythmical en 30 Septiembre 2017, 06:43 AM
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.
Título: Re: No me compila el for en C
Publicado por: 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
Título: Re: No me compila el for en C
Publicado por: class_OpenGL en 30 Septiembre 2017, 22:51 PM
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)
Título: Re: No me compila el for en C
Publicado por: JavierScars en 1 Octubre 2017, 04:33 AM
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.