Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/02/2008, 07:45
TemplarK
 
Fecha de Ingreso: febrero-2008
Mensajes: 5
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Pasar estructuras por referencia

Mas que aclarar o responder a tu pregunta yo vengo a complicarla, me he perdido un poco, si los arreglos se pasan a funciones solo por referencia, los arreglos de estructuras, estimo tambien lo hacen, sin embargo en el codigo que inserto a continuacion en la funcion debo trabajar con (.) en lugar de (->) a que se debe??
otro punto que me confunde es que si no uso fflush(stdin); no me permite ingresar los datos... que estoy haciendo mal?

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define CANT_ALUM 5

struct alum {
            char nombre[15], titulo[15];
            int comision,legajo;};
void busca_alumno(int, struct alum[]);
void carga_datos(alum[CANT_ALUM]);
void listado(int, struct alum[]);

main()
{
int flag,comision,nro;
alum alumnos[CANT_ALUM];
     system("cls");
     printf("1- Carga de datos\n2- Listado de los alumnos de una comision\n3- Busca alumno\n4- Fin\n\n");
while((flag=getchar())!='4')
     {
     system("cls");
     printf("1- Carga de datos\n2- Listado de los alumnos de una comision\n3- Busca alumno\n4- Fin\n\n");
     switch(flag)
          {
          case '1':carga_datos(alumnos); 
                 break;
          case '2':
                 printf("\n\nIngrese el nro de comision que desea listar: ");
                 scanf(" %d",&comision);
                 listado(comision,alumnos);
                 break;
          case '3':printf("\n\nIngrese el nro de legajo del alumno a consultar: ");
                 scanf(" %d",&nro);
                 busca_alumno(nro,alumnos);
                 break;
          default: break; 
          }
     
     };

return 0;       
}

void carga_datos(alum estudiantes[CANT_ALUM])
{
int i;
for(i=0;i<CANT_ALUM;i++)
     {printf("\nIngrese el nro de legajo: ");
     scanf(" %d",&estudiantes[i].legajo);
     printf("Apellido y Nombre del alumno: ");
     fflush(stdin);
     gets(estudiantes[i].nombre);
     printf("Titulo Nivel Medio: ");
     fflush(stdin);
     gets(estudiantes[i].titulo);
     printf("Comision asignada: ");
     scanf(" %d",&estudiantes[i].comision); };
}
void listado(int com, alum est[CANT_ALUM])
{
int i;
system("cls");
printf("\t\t\tCOMISION %d\nLEGAJO\tNOMBRE Y APELLIDO\tTITULO NIVEL MEDIO",com);
for(i=0;i<CANT_ALUM;i++)
     {
     if(est[i].comision==com)
          {
          printf("\n%4d\t%15s\t%15s",est[i].legajo,est[i].nombre,est[i].titulo);
          };
     }
printf("\n");
system("pause");     
}
void busca_alumno(int nro, alum est[CANT_ALUM])
{
int i,aux=0;
for(i=0;i<CANT_ALUM;++i)
     if(nro==est[i].legajo)
          break;
printf("\nNro de Legajo: %d",est[i].legajo);
printf("\nApellido y Nombre: %s\nTitulo Nivel Medio: %s\nComision asignada: %d\n",est[i].nombre,est[i].titulo,est[i].comision);
system("pause");
}