Programa de arreglo de estructuras en C

Iniciado por daz08, 5 Octubre 2014, 18:23 PM

0 Miembros y 1 Visitante están viendo este tema.

daz08

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...

ThePinkPanther

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

daz08

Cita de: 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
Muchisímas gracias, de tanto codigo a veces uno se le olvidan cosas. De verdad gracias  ;D