elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No me compila el for en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No me compila el for en C  (Leído 2,609 veces)
Rhythmical

Desconectado Desconectado

Mensajes: 6


Ver Perfil
No me compila el for en C
« 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.



este es el código

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. typedef char cadena[50];
  6.  
  7. struct RegistroFecha
  8. {
  9. int day;
  10. int month;
  11. int year;
  12.  
  13. };
  14.  
  15. struct RegistroEmpleado
  16. {
  17. int   legajo;
  18. cadena apynom;
  19. cadena cargo;
  20. float sueldo;
  21. RegistroFecha ingreso;
  22. RegistroFecha born;
  23. };
  24.  
  25. const int employer = 10;
  26.  
  27. main()
  28. {
  29. int N=0;
  30. RegistroEmpleado vec[employer];
  31. printf("\nIngrese la cantidad de empleados: ");scanf("%d",&N);
  32.  
  33. for(int i=0;N<=i;i++)
  34. {
  35. system("cls");
  36. printf("\nEmpleado Nro %d", i+1);
  37. printf("\nLegajo: ");scanf("%d",&vec[i].legajo);
  38. printf("\nApellido y nombre: "); _flushall();gets(vec[i].apynom);
  39. printf("\nCargo: "); _flushall();gets(vec[i].cargo);
  40. printf("\nSueldo: ");scanf("%f",&vec[i].sueldo);
  41. printf("\n**Fecha de ingreso**: ");
  42. 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);
  43. printf("\n**Fecha de nacimiento**: ");
  44. 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);
  45. }
  46.  
  47. for(int i=0;N<=i;i++)
  48. {
  49. printf("\nEmpleado Nro %d", i+1);
  50. printf("\nLegajo: ",vec[i].legajo);
  51. printf("\nApellido y nombre:" ,vec[i].apynom);
  52. printf("\nCargo: ",vec[i].cargo);
  53. printf("\nSueldo: ",vec[i].sueldo);
  54. printf("\n**Fecha de ingreso**: ");
  55. printf("\n%d/%d/%d" ,vec[i]. ingreso.day,vec[i].ingreso.month,vec[i].ingreso.year);
  56. printf("\n**Fecha de nacimiento**: ");
  57. printf("\n%d/%d/%d" ,vec[i]. born.day,vec[i].born.month,vec[i].born.year);
  58. }
  59. printf("\n\n");
  60. system("pause");  
  61. }

Espero su ayuda, saludos cordiales.


En línea

biestable

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: No me compila el for en C
« Respuesta #1 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


« Última modificación: 30 Septiembre 2017, 08:26 am por biestable » En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: No me compila el for en C
« Respuesta #2 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.

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 Desconectado

Mensajes: 116



Ver Perfil
Re: No me compila el for en C
« Respuesta #3 en: 1 Octubre 2017, 04:33 am »

Lo mas probable es que sea por el standar con el que estas compilando...
Intenta usando
Código:
-std=c99
En la linea de comando cuando vallas a compilar.
O si no
Código:
--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.
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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
GCC Compila BIN?¿
Programación C/C++
Riki_89D 1 2,485 Último mensaje 14 Septiembre 2010, 21:06 pm
por Horricreu
No compila
Programación C/C++
BJM 3 3,405 Último mensaje 12 Junio 2013, 05:33 am
por OmarHack
no me compila
Programación C/C++
miguelcrack 1 1,595 Último mensaje 23 Octubre 2016, 18:06 pm
por engel lex
¿Por que Dev C++ no me compila esto?
Programación C/C++
maciuskan 3 3,059 Último mensaje 7 Octubre 2023, 02:24 am
por BloodSharp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines