Hola que tal a todos, bueno estoy asiendo un proyecto de la facu y tengo problemas con el pasaje de parametros por referencia, nesesito que alguien me de ejemplos plz, nesesito pasar una estructura y que me la devuelva ordenada , pero cuando lo pruebo el programa se ejecuta y luego se trava al probar la opcion b , no se cual es el error :P... saluos
este es el codigo:
#include <stdio.h>
#include <stdlib.h>
#define I 2
#define J 2
#define K 2
#define L 2
/***********************DECLARACION DE ESTRUCTURAS*****************************/
struct ventas{
int cod_rem;
int cant_vend;
};
typedef struct ventas vent;
vent ven[I];
struct remedios{
int cod_rem;
char nom_rem[66];
int cod_lab;
float precio;
};
typedef struct remedios remt;
remt rem[J];
struct laboratorio{
int cod_lab;
char nom_lab[20];
};
typedef struct laboratorio labt;
labt lab[K];
struct varios{
int cod_lab;
char nom_lab[20];
int total_vendido;
float tot_rec;
};
typedef struct varios vart;
vart var[L];
/********************************PROTOTIPOS******** ****************************/
void carga_estructura_lab(labt[],int);
void carga_estructura_rem(remt[],int);
void carga_estructura_ven(vent[],int);
void cargas_de_estructuras();
void consulta_precio(remt[],int );
void ordenar_arrlego_remedios(remt*[],int);
/****************************FUNCION PRINCIPAL*********************************/
int main(int argc, char *argv[])
{
char opcion;
do
{
puts("Ingrese una opcion:");
printf("\nA:--Carga de registros.\nB:--Consulta precio.\nC:--Informe de ventas mensuales.\nD:--Incrementar precio de remedios.\nE:--Finalizar programa.\n");
fflush(stdin),scanf("%c",& opcion);
switch((tolower (opcion))){
case 'a':cargas_de_estructuras();
break;
case 'b': consulta_precio(rem,J );
break;
case 'c':
break;
case 'd':
break;
case 'e':
break;
default : printf("\nOpcion incorrecta\n");
break;
}
} while( opcion !='e');
system("PAUSE");
return 0;
}
/****************************DEMAS MODULOS*************************************/
void cargas_de_estructuras(){
printf("Ingrese los datos en el orden mostrado y presione enter por cada uno:\n");
system("cls");
carga_estructura_lab( lab, I);
system("cls");
carga_estructura_rem( rem, J);
system("cls");
carga_estructura_ven( ven, K);
system("cls");
}
void carga_estructura_lab(labt labb[],int II)
{
puts("\nCargue el codigo de un laboratorio y su nombre.\n");
int a=1;
while (a<=II){
scanf("%d",& labb[a].cod_lab),fflush(stdin);
gets(labb[a].nom_lab),fflush(stdin);
a++;
}
}
void carga_estructura_rem(remt remm[],int JJ)
{
puts("\nAhora ingrese codigo de laboratorio, nombre de remedio, codigo de remedio y su\n precio.\n");
int a=1;
while(a<=JJ){
scanf("%d",& remm[a].cod_lab),fflush(stdin);
gets(remm[a].nom_rem),fflush(stdin);
scanf("%d",& remm[a].cod_rem),fflush(stdin);
scanf("%f", & remm[a].precio),fflush(stdin);
a++;
}
}
void carga_estructura_ven(vent ventt[],int KK)
{
puts("\nPor ultimo ingrese codigo de remedio y cantidad vendida.");
int a=1;
while (a<=KK){
scanf("%d",& ventt[a].cod_rem),fflush(stdin);
scanf("%d",& ventt[a].cant_vend),fflush(stdin);
a++;
}
}
/************************************************** **********/
void consulta_precio(remt remm[],int JJ ){
int codigo;
printf("Ingrese un codigo de remedio\n"),scanf("%d",& codigo);
ordenar_arrlego_remedios(&remm,JJ);
printf("%d:",remm[1].cod_rem);
}
/************************************************** ******/
void ordenar_arrlego_remedios(remt *REm[],int jj){
int B=0;
do{
B=0;
int t=1;
while(t<=jj){
if ((*REm[t]).cod_rem >(*REm[t+1]).cod_rem)
{
B=1;
int AUX=(*REm[t]).cod_rem;
(*REm[t]).cod_rem=(*REm[t+1]).cod_rem;
(*REm[t+1]).cod_rem=AUX;
}
t++;
}
}while( B=0);
}