Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: daz08 en 5 Octubre 2014, 18:23 pm



Título: Programa de arreglo de estructuras en C
Publicado por: daz08 en 5 Octubre 2014, 18:23 pm
Buenos días, tengo este programa de estructuras con arreglos en C hecho en dev-c++. No me salen errores, pero al ejecutarlo no corre después de un punto y se cierra:
#include <stdio.h>
#include <string.h>
#include<conio.h>
struct fecha
{
       int dia, mes, anyo;
};
typedef struct
{
       char nombre[30], sexo[5];
       fecha nacimiento;
       float sueldo;
      
}empleados;
int i,p,d,m,a;
float may, men;
char nbr[30], sx[5];
void laf ();
main()
{
      printf("Cuantos empleados son? ");
      scanf("%d", p);
      empleados n[p];
      
    
    for(i=1;i<=p;i++)
      {
           printf("\nEcriba el nombre del empleado %d :",i);
           scanf("%s",&n.nombre);
           printf("\nEscriba su fecha de nacimiento:");
           printf("\nDia: ");
           scanf("%d",&n.nacimiento.dia);
           printf("\nMes: ");
           scanf("%d",&n.nacimiento.mes);
           printf("\nAnyo: ");
           scanf("%d",&n.nacimiento.anyo);
           printf("\nEscriba su sexo (f/m): ");
           scanf("%s",&n.sexo);
           printf("\nEscriba su sueldo: ");
           scanf("%f",&n.sueldo);
      }
 laf ();
 getch();
}
void  laf ()
{    empleados n[p];
     may=n[1].sueldo;
     for(i=1;i<=p;i++)
     {
          if(n.sueldo>may)
            {
                             may=n.sueldo;
                             strcpy(nbr,n.nombre);
                             d=n.nacimiento.dia;
                             m=n.nacimiento.mes;
                             a=n.nacimiento.anyo;
                             strcpy(sx,n.sexo);
            }
     }
     printf("\nEmpleado con mayor sueldo:\n\n ");
     printf("\nNombre: %s ",nbr);
     printf("\nFecha de nacimiento: ");
     printf("\nDia: %d ",d);
     printf("\nMes: %d ",m);
     printf("\nAnyo: %d ",a);
     printf("\nSexo: %s",sx);
     printf("\nSueldo: %f",may);
    
    
     men=n[1].sueldo;
     for(i=1;i<=p;i++)
     {
          if(n.sueldo<men)
            {
                             men=n.sueldo;
                             strcpy(nbr,n.nombre);
                             d=n.nacimiento.dia;
                             m=n.nacimiento.mes;
                             a=n.nacimiento.anyo;
                             strcpy(sx,n.sexo);
            }
     }
      printf("\nEmpleado con menor sueldo:\n\n ");
     printf("\nNombre: %s ",nbr);
     printf("\nFecha de nacimiento: ");
     printf("\nDia: %d ",d);
     printf("\nMes: %d ",m);
     printf("\nAnyo: %d ",a);
     printf("\nSexo: %s",sx);
}
El problema está en que se pare después de ingresar la cantidad de empleados.
Agradecería cualquier sugerencia...


Título: Re: Programa de arreglo de estructuras en C
Publicado por: ThePinkPanther en 5 Octubre 2014, 21:51 pm
Estas utilizando mal el scanf..

tenes una variable entera i ..
int i
y usas de la siguiente forma el scanf..
scanf("%d", p); , el segundo parámetro de scanf es la dirección de memoria .
prueba así
scanf("%d",&p);

Modifico : perdón, una variable entera p. XD


Título: Re: Programa de arreglo de estructuras en C
Publicado por: daz08 en 5 Octubre 2014, 22:02 pm
Estas utilizando mal el scanf..

tenes una variable entera i ..
int i
y usas de la siguiente forma el scanf..
scanf("%d", p); , el segundo parámetro de scanf es la dirección de memoria .
prueba así
scanf("%d",&p);

Modifico : perdón, una variable entera p. XD
Muchisímas gracias, de tanto codigo a veces uno se le olvidan cosas. De verdad gracias  ;D