El programa no me encuentra errores, se ejecuta normalmente pero cuando entra a la opcion 2 o 3 no funciona y se sale del programa.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MAX 2
struct med
{
char codigo[7];
char nom_com[15];
char monodroga[25];
char drogueria [25];
int existencia;
float precio;
};
void carga(struct med *m, int *contm);
struct med *busca(struct med *m, int contm, int *contexis);
struct med selecciona(struct med *m, int contm);
main()
{
struct med medicamentos[MAX],*med, seleccion[10],selec;
char opc;
int cond=0,contm=0,caso=0,j=0,i;
do{
printf("\t\t Menu de opciones\n");
printf("1-Carga datos\n2-Busca\n3-Selecciona\n4-Muestra\n5-Salir\n\n");
opc =getch();
switch(opc)
{
case'1': carga(medicamentos, &contm);
printf("Cantidad de medicamentos cargados: %d\n", contm);
getch();
clrscr();
break;
case'2': while (j<contm)
{
med= busca(medicamentos,contm,&caso );
if(caso)
{
seleccion[j]=*med;
j++;
}
else
{
strcpy(seleccion[j].nom_com,"VACIO");
j++;
}
}
for(i=0;i<contm;i++)
{
if(strcmp(seleccion.nom_com,"VACIO")!=0)
{
printf("Nombre Comercial %s\nMonodroga: %s\nDrogueria: %s\nExistencia %d\nPrecio %.2f\n", seleccion.nom_com, seleccion.monodroga, seleccion.drogueria, seleccion.existencia, seleccion.precio);
}
}
getch();
break;
case'3': selec=selecciona(medicamentos,contm);
printf("Nombre: %s\n precio: %f\n Cantidad: %d", selec.nom_com, selec.precio, selec.existencia);
getch();
break;
case'4':cond=1;
break;
case'5': cond=1;
break;
default: printf("Tecla incorrecta\n");
break;
}
}while (opc!=5 && cond!=1);
system ("PAUSE");
return ;
}
void carga(struct med *m, int *contm)
{
int i=*contm,cond=0;
char opc='s';
while (opc=='s' && i<MAX)
{
printf("Codigo:\n"); fflush(stdin);
gets(m.codigo);
printf("Nombre Comercial:\n"); fflush(stdin);
gets(m.nom_com);
printf("Monodroga:\n"); fflush(stdin);
gets(m.monodroga);
printf("Drogueria:\n"); fflush(stdin);
gets(m.monodroga);
printf("Existencia\n");
scanf("%d", &m.existencia);
printf("Precio:\n");
scanf("%d", &m.precio);
cond=1;
(*contm)++;
printf("desea ingresar otro dato\n");
opc=getch();
}
if(cond==0)
{
printf("No se cargaron datos\n");
}
}
struct med *busca(struct med *m, int contm, int *caso)
{
char mon_ing[25];
int i, flagg=0,cas;
printf("Ingrese monodroga a buscar:\n");
scanf("%s", mon_ing);
for(i=0; i<contm; i++)
{
if(strcmp(m.monodroga,mon_ing)==0)
{
cas=1;
caso=&cas;
return (&m);
}
else
{
cas=0;
caso=&cas;
return (0);
}
}
}
struct med selecciona(struct med *m, int contm)
{
int i,flagg=0;
float pmin;
for(i=0;i<contm;i++)
{
if(flagg==0)
{
pmin=m.precio;
flagg=1;
}
if(m.precio<pmin)
{
if(m.existencia>0)
{
return (m);
}
}
}
}