15/02/2008, 07:45
|
| | 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");
}
|