Autor
|
Tema: No me compila el for en C (Leído 2,609 veces)
|
Rhythmical
Desconectado
Mensajes: 6
|
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. 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++) { 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); } }
Espero su ayuda, saludos cordiales.
|
|
|
En línea
|
|
|
|
biestable
Desconectado
Mensajes: 10
|
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
|
|
« Última modificación: 30 Septiembre 2017, 08:26 am por biestable »
|
En línea
|
|
|
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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. 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)
|
|
|
En línea
|
| Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL |
|
|
|
|
JavierScars
Desconectado
Mensajes: 116
|
Lo mas probable es que sea por el standar con el que estas compilando... Intenta usando En la linea de comando cuando vallas a compilar. O si no 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.
|
|
|
En línea
|
Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad, y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.
|
|
|
|
|